移动app接口编程技术-学习实现之PHP类其他特性
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了移动app接口编程技术-学习实现之PHP类其他特性,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3636字,纯文字阅读大概需要6分钟。
内容图文
![移动app接口编程技术-学习实现之PHP类其他特性](/upload/InfoBanner/zyjiaocheng/156/6c66de60248c4bda81d1d7090bc039d1.jpg)
Static静态关键字
静态。 在类中,被他标记的变量或方法,不属于任何一个对象。访问的时候要使用“::“。并且在类中自我调用的时候要是用”self::”
例如:
classCar {privatestatic$speed = 10;
publicfunctiongetSpeed() {returnself::$speed;
}
//在这里定义一个静态方法,实现速度累加10publicstaticfunctionspeedUp()
{returnself::$speed += 10;
}
}
$car = new Car();
Car::speedUp(); //调用静态方法加速echo$car->getSpeed(); //调用共有方法
输出当前的速度值静态方法也可以通过变量来进行动态调用。
$func = 'getSpeed';
$className = 'Car';
echo$className::$func(); //动态调用静态方法
- 访问控制
访问控制通过关键字public,protected和private来实现。被定义为公有的类成员可以在任何地方被访问。被定义为受保护的类成员则可以被其自身以及其子类和父类访问。被定义为私有的类成员则只能被其定义所在的类访问。
类属性必须定义为公有、受保护、私有之一。
类中的方法可以被定义为公有、私有或受保护。如果没有设置这些关键字,则该方法默认为公有。
如果构造函数定义成了私有方法,则不允许直接实例化对象了,这时候一般通过静态方法进行实例化,在设计模式中会经常使用这样的方法来控制对象的创建,比如单例模式只允许有一个全局唯一的对象。
classCar {privatefunction__construct() {echo'object create';
}
privatestatic$_object = null;
publicstaticfunctiongetInstance() {if (empty(self::$_object)) {
self::$_object = new Car();
//内部方法可以调用私有方法,因此这里可以创建对象
}
returnself::$_object;
}
}
//$car = new Car(); //这里不允许直接实例化对象$car = Car::getInstance(); //通过静态方法来获得一个实例
- 继承
classCar {public$speed = 0; //汽车的起始速度是0publicfunctionspeedUp() {$this->speed += 10;
return$this->speed;
}
}
//定义继承于Car的Truck类classTruckextendsCar{publicfunctionspeedUp() {$this->speed = parent::speedUp() + 50;
}
}
$car = new Truck();
$car->speedUp();
echo$car->speed;
- 重载
PHP中的重载指的是动态的创建属性与方法,是通过魔术方法来实现的。属性的重载通过__set,__get,__isset,__unset来分别实现对不存在属性的赋值、读取、判断属性是否设置、销毁属性。
classCar {private$ary = array();
publicfunction__set($key, $val) {$this->ary[$key] = $val;
}
publicfunction__get($key) {if (isset($this->ary[$key])) {
return$this->ary[$key];
}
returnnull;
}
publicfunction__isset($key) {if (isset($this->ary[$key])) {
returntrue;
}
returnfalse;
}
publicfunction__unset($key) {unset($this->ary[$key]);
}
}
$car = new Car();
$car->name = '汽车'; //name属性动态创建并赋值echo$car->name;
方法的重载通过__call来实现,当调用不存在的方法的时候,将会转为参数调用__call方法,当调用不存在的静态方法时会使用__callStatic重载。
lass Car {
public$speed = 0;
publicfunction__call($name, $args) {if ($name == 'speedUp') {
$this->speed += 10;
}
}
}
$car = new Car();
$car->speedUp(); //调用不存在的方法会使用重载echo$car->speed;
- 类对象比较
对象比较,当同一个类的两个实例的所有属性都相等时,可以使用比较运算符“==“进行判断,当需要判断两个变量是否为同一个对象的引用时,可以使用全等运算符“===“进行判断。
classCar {
}
$a = new Car();
$b = new Car();
if ($a == $b) echo'=='; //trueif ($a === $b) echo'==='; //false
对象复制,在一些特殊情况下,可以通过关键字clone来复制一个对象,这时__clone方法会被调用,通过这个魔术方法来设置属性的值。
classCar {public$name = 'car';
publicfunction__clone() {$obj = new Car();
$obj->name = $this->name;
}
}
$a = new Car();
$a->name = 'new car';
$b = clone$a;
var_dump($b);
对象序列化,可以通过serialize方法将对象序列化为字符串,用于存储或者传递数据,然后在需要的时候通过unserialize将字符串反序列化成对象进行使用。
classCar {public$name = 'car';
}
$a = new Car();
$str = serialize($a); //对象序列化成字符串echo$str.'
';
$b = unserialize($str); //反序列化为对象
var_dump($b);
版权声明:本文为博主原创文章,未经博主允许不得转载。
以上就介绍了移动app接口编程技术-学习实现之PHP类其他特性,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
内容总结
以上是互联网集市为您收集整理的移动app接口编程技术-学习实现之PHP类其他特性全部内容,希望文章能够帮你解决移动app接口编程技术-学习实现之PHP类其他特性所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。