PHP class

php对象的传参,赋值,函数返回,均为引用

<?php
/**
 * Created by PhpStorm.
 * User: wangweiwei11
 * Date: 2016/10/23
 * Time: 11:35
 */

class student{
    public $age;

    public function __construct($age = 0)
    {
        $this->age = $age;
    }

    public function getAge()
    {
        return $this->age;
    }

    public function setAge($age)
    {
        $this->age = $age;
    }

    public function __toString()
    {
        return "i am ".$this->age . " years old"."<br/>";
    }

}

function change_age(student $student){
    $student->age=180;
    return $student;
}

$student1 = new Student(10);
$student2 = $student1;
$student2->age = 30;
$student3 = change_age($student1);

echo $student1;
echo $student2;
echo $student3;
$student3->age=10;

echo $student1;
echo $student2;
echo $student3;

$methods = get_class_methods($student1);
var_dump($methods);
$classname = get_class($student1);
echo $classname;
$class_vars = get_class_vars('Student');
var_dump($class_vars);
$object_vars = get_object_vars($student1);
var_dump($object_vars);

运行结果为

i am 180 years old
i am 180 years old
i am 180 years old
i am 10 years old
i am 10 years old
i am 10 years old

array (size=4)
  0 => string '__construct' (length=11)
  1 => string 'getAge' (length=6)
  2 => string 'setAge' (length=6)
  3 => string '__toString' (length=10)

student

array (size=1)
  'age' => null
array (size=1)
  'age' => int 10

 

类的一些方法

•__autoload — 尝试加载未定义的类
•call_user_method_array — 调用一个用户方法,同时传递参数数组(已废弃)
•call_user_method — 对特定对象调用用户方法(已废弃)
•class_alias — 为一个类创建别名
•class_exists — 检查类是否已定义
•get_called_class — 后期静态绑定("Late Static Binding")类的名称
•get_class_methods — 返回由类的方法名组成的数组
•get_class_vars — 返回由类的默认属性组成的数组
•get_class — 返回对象的类名
•get_declared_classes — 返回由已定义类的名字所组成的数组
•get_declared_interfaces — 返回一个数组包含所有已声明的接口
•get_declared_traits — 返回所有已定义的 traits 的数组
•get_object_vars — 返回由对象属性组成的关联数组
•get_parent_class — 返回对象或类的父类名
•interface_exists — 检查接口是否已被定义
•is_a — 如果对象属于该类或该类是此对象的父类则返回 TRUE
•is_subclass_of — 如果此对象是该类的子类,则返回 TRUE
•method_exists — 检查类的方法是否存在
•property_exists — 检查对象或类是否具有该属性
•trait_exists — 检查指定的 trait 是否存在
 

类的魔术方法

__construct()

__destruct()

__call()在对象中调用一个不可访问方法时,__call() 会被调用

__callStatic()在对象中调用一个不可访问静态方法时,__call() 会被调用

__get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() 和 __debugInfo()等方法在 PHP 中被称为"魔术方法"(Magic methods)。

<?php
class PropertyTest {
     /**  被重载的数据保存在此  */
    private $data = array();

 
     /**  重载不能被用在已经定义的属性  */
    public $declared = 1;

     /**  只有从类外部访问这个属性时,重载才会发生 */
    private $hidden = 2;

    public function __set($name, $value) 
    {
        echo "Setting '$name' to '$value'\n";
        $this->data[$name] = $value;
    }

    public function __get($name) 
    {
        echo "Getting '$name'\n";
        if (array_key_exists($name, $this->data)) {
            return $this->data[$name];
        }

        $trace = debug_backtrace();
        trigger_error(
            'Undefined property via __get(): ' . $name .
            ' in ' . $trace[0]['file'] .
            ' on line ' . $trace[0]['line'],
            E_USER_NOTICE);
        return null;
    }

    /**  PHP 5.1.0之后版本 */
    public function __isset($name) 
    {
        echo "Is '$name' set?\n";
        return isset($this->data[$name]);
    }

    /**  PHP 5.1.0之后版本 */
    public function __unset($name) 
    {
        echo "Unsetting '$name'\n";
        unset($this->data[$name]);
    }

    /**  非魔术方法  */
    public function getHidden() 
    {
        return $this->hidden;
    }
}

 

 

转载于:https://my.oschina.net/hnuweiwei/blog/777881

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值