1. 创建类、实例化、命名空间、类成员、类方法(手写)
namespace admin;
class demo{
public $product = '手机';//成员变量初始化使用常数
public $price = '1600';
public $name;
public function sum($a,$b){//访问限制符
return $a+$b;
}
public function newclass(){
$b = new self();//$this代表当前类,self代表类的实例
echo $b->product;//当前类,因为类是有名字,自己的类里可以调用自己
}
public function this_test(){
return $this->product . '价格为' . $this->price;//省略了$this = new self;
}
public function __construct($name)
{
echo $this->name = $name;
}//实例化的时候自动就调用
public function __destruct(){
echo '对象已被删除';
}
}
$a = new demo('an');
// 访问类里的成员 ->
echo '<hr/>';
echo $a->product;//product不加$因为会被当作变量
//在访问PHP类中的成员变量或方法时,如果被引用的变量或者方法被声明成const(定义常量)或者static(声明静态),那么就必须使用操作符::,
//反之如果被引用的变量或者方法没有被声明成const或者static,那么就必须使用操作符->。
//另外,如果从类的内部访问const或者static变量或者方法,必须使用自引用的self,因为:
//1.self代表类,$this代表对象
//2.能用$this的地方一定使用self,能用self的地方不一定能用$this
//3.静态的方法中不能使用$this,静态方法给类访问的。
//结论 : self与$this的功能极其相似,但二者又不相同。$this不能引用静态成员和常量。self更像类本事,而$this更像是实例本身。
echo '<hr/>';
echo $a->this_test();
echo '<hr/>';
$a->color = 'red';//动态属性,public
print_r(get_class_vars(demo::class));//把类的成员列出来
echo '<hr/>';
print_r(get_class_methods(demo::class));
echo '<hr/>';
2. 构造方法
实例化类的时候就调用,用于预处理
class construt_test{
function __construct($name){
echo $name . '讲课真棒!';
echo '<hr/>';
}
}
$v = new construt_test('欧阳老师');
附件
一二题合在一起的运行结果: