PHP 魔术方法

PHP中魔术方法

__construct
__destruct
__set
__get
__isset
__unset

  • 下面是一个 Person 类
class Person
{
    private $name;
    private $sex;
    private $age;

    // 构造方法
    function __construct($name = '', $sex = '男', $age = 1)
    {
        echo __METHOD__ . PHP_EOL;
        $this->name = $name;
        $this->sex = $sex;
        $this->age = $age;
    }

    // 析构方法
    function __destruct()
    {
        echo __METHOD__ . PHP_EOL;
    }
    
    function say()
    {
        echo '我的名字: ' . $this->name . ' ,性别: ' . $this->sex . ' ,年龄: ' . $this->age . PHP_EOL;
    }

    function run()
    {
        echo $this->name . ' 在跑步' . PHP_EOL;
    }
}
  • 初始化时调用 __construct
$roy = new Person('roy', '男', 18); // Person::__construct
$roy->run(); // roy 在跑步
$roy->say(); // 我的名字: roy ,性别: 男 ,年龄: 18
  • 调用 __destruct
$roy = null; // Person::__destruct
  • __set
/**
     * @param string $propertyName 成员变量
     * @param mixed $propertyValue 成员变量对应的值
     */
    function __set($propertyName, $propertyValue)
    {
        echo __METHOD__ . ' ,参数: property- ' . $propertyName . '  ,value- ' . $propertyValue . PHP_EOL;
    }
$roy->name = 'lily'; // 自动调用 __set()
  • __get
/**
  * @param string $propertyName 成员变量
     */
    function __get($propertyName)
    {
        echo __METHOD__ . '参数: Property - ' . $propertyName . PHP_EOL;
    }
echo $roy->age; // 自动调用 __get()
  • __isset 和 __unset
function __isset($propertyName)
    {
        echo __METHOD__ . '参数 : ' . $propertyName . PHP_EOL;
    }

    function __unset($propertyName)
    {
        echo __METHOD__ . '参数 : ' . $propertyName . PHP_EOL;
    }
var_dump(isset($roy->name)); // 自动调用 __isset
unset($roy->age); // 自动调用 __unset
  • __call 当调用对象不存在的方法时会自动调用此方法
/**
     * @param string $functionName 方法名
     * @param array $arguments 传入的参数
     */
    function __call($functionName, $arguments)
    {
        // TODO: Implement __call() method.
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容