实例
<?php /** * 类的声明与实例化 * */ //用关键字class声明一个类 class Demo1 { } //用关键字new实例化一个类 $demo1=new Demo1(); //给当前对象添加一些属性和方法 $demo1->name='小王'; $demo1->sex='男'; $demo1->hello=function (){ return '我说一个自定义的类方法'; }; //使用对象符:->来访问对象中的成员(属性和方法) echo $demo1->name,':',$demo1->sex,'<br>'; //正确的调用方式,对象方法应该以回调的方式运行 echo call_user_func($demo1->hello);
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例
<?php /** * 类常量,对象初始化,属性的重载 * 1. 类常量可用来创建对象之间的共享数据 * 2. 对象初始化: 用构造方法实现,创建对象之前会自动调用,完全对象的一些初始化工作 * 3.属性重载:在类的外部访问不存在或者无权限访问的属性时,会自动触发此类方法调用 * 属性重载涉及四个方法:__get(),__set(),__isset(),__unset() */ //父类 class test { //属性常量 const PAGE_NAME='WELCOME TO HANGZHOU'; private $name; private $age; public function __construct($name,$age) { $this->name=$name; $this->age=$age; } public function __get($name) { return $this->name; } public function __set($name, $value) { // TODO: Implement __set() method. return $this->$name=$value; } public function showResult() { return '我爱你,中国!'; } } class show extends test{ private $sex; // 子类构造函数 function __construct($name, $age,$sex='男') { //父类的构造方法 parent::__construct($name, $age); $this->sex=$sex; } } echo '父类类调用'; $result=new test('小红',12); //方法重载设置值 $result->name='小军'; echo $result->name; echo '<hr>'; echo '子类调用'; $show=new show('小米','55'); echo '姓名:',$show->name='小红'.'<br>'; echo '性别:',$show->sex='女'; echo '<br>'. '子类调用父类方法','<br>'; //子类调用父类方法 echo $show->showResult();
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例
<?php /** * 3,类常量与类属性的重载 */ class lianxi1{ //定义一个常量变量 const TITTLE_NAME='WELCOME TO MY HOME!'; //定义三个变量,分别访问范围府为public private ,protected public $name; private $age; protected $sex; //构造函数,类加载的时候进行初始化变量和方法 public function __construct($name,$age,$sex='男') { $this->name=$name; $this->age=$age; $this->sex=$sex; $this->show(); } function show() { return '姓名:'.$this->name.'年龄:'.$this->age.'性别:'.$this->sex; } //获取属性重载方法 public function __get($name) { return $this->$name; } //设置属性重载方法 public function __set($name, $value) { // TODO: Implement __set() method. return $this->$name=$value; } // 检测属性重载方法 public function __isset($name) { return isset($name)?$name:'没有访问权限'; } //删除属性重载方法 public function __unset($name) { if ($name='name') { unset($this->$name); } else { return false; } } } //调用常量方法 echo '输出常量变量:',lianxi1::TITTLE_NAME; echo '<hr>'; //实例化对象,设置默认的值 $result=new lianxi1('小明','20'); //var_dump($result); //访问属性,因为属性全部被封装,所以必须通过一个统一的外部接口访问 echo $result->show(); echo '<hr>'; //通过创建获取属性的重载方法,从而获取变量的值 echo '通过创建获取属性重载读取私有变量:年龄',$result->age; echo '<hr>'; echo '通过创建获取属性重载读取私有变量:性别',$result->sex; echo '<hr>'; //通过设置属性的重载方法,从而改变变量的值 echo '通过设置属性重载方法改变私有变量:年龄',$result->age=33; echo '<hr>'; //通过设置属性的重载方法,从而改变变量的值 echo '通过设置属性重载方法改变私有变量:年龄',$result->sex='女'; echo '<hr>'; echo '改变年龄和性别值后:',$result->show(); echo '<hr>'; echo '检测变量是否存在:'; echo isset($result->name) ? '存在<br>' : '<span style="color:red">不存在</span><br>'; echo '<hr>'; echo '删除变量后显示:'; unset($result->name); unset($result->age); unset($result->sex); echo '改变年龄和性别值后:',$result->show();
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例
<?php /** *类中静态成员的声明与访问 */ class test1 { //定义静态成员变量 private static $name; private static $age; private static $sex; public static function show() { echo '我叫:',self::$name,'今年:',self::$age,'岁,性别是',self::$sex; } public function __get($name) { return $name; } function __construct($name,$age,$sex) { self::$name=$name; self::$age=$age; self::$sex=$sex; } } $a=new test1('小米','25','男'); echo test1::show();
运行实例 »
点击 "运行实例" 按钮查看在线实例