设为首页 收藏本站
查看: 433|回复: 0

[经验分享] php学习笔记------[php面向对象中常用关键字与魔术方法]

[复制链接]

尚未签到

发表于 2015-8-29 08:56:39 | 显示全部楼层 |阅读模式
<?php
/*
* PHP中常用的关键字
*
* final
* 1. final不能修饰成员属性(类中的常量不是用这个关键在)
*
* 2. final只能修饰类和方法
*
* 作用:
* 使用final修饰的类不能被子类继承
*
* 使用final修饰的方法不能被子类去覆盖
*
* 用来限制类不被继承,方法不被覆盖
*
* static
* 1.使用static可以修饰成员属性和成员方法,不能修饰
*
* 2.用static修饰的成员属性,可以被同一个类的所有对象共享
*
* 3.静态的数据是存在内存中的数据段(初始化静态段)
*
* 4.静态的数据是在类被第一次加载时 分配到内存中的,以后在用到类时直接从数据段中获取
*
* 5.什么是类被加载?只要在程序中使用到这个类(有这类名出现)
*
* 注意:静态成员都要使用类名去访问,不用创建对象,不用对象去访问
* 类名::静态成员
*
* 如果在类中使用静态成员,可以使用self代表本类类名
* self::静态成员
*
* 6.静态方法(static修饰),不能访问非静态的成员
*因为非静态的成员,必须用对象来访问,而访问内部成员使用的是$this
*静态方法不能使用对象来调用,也就没有对象,$this也就不能代表什么对象,非静态的成员还必须使用对象
*如果确定一个方法中不使用非静态成员,则可以声明为静态方法
*
*
*
*
* const
*
* 1.只能修饰成员属性
*
* 2.普通声明常量:define('常量名','testesttest');
*
* 3.在类中声明常量使用const
*
* 4.命名的方式和define是一样的效果
*
* 5.访问方式和static静态成员属性时一样的(在类外部使用 类名::常量,在类内部使用 self::常量)
*
* 6.常量一定要在声明时就给初值
*
*
* PHP中常用的魔术方法
*
* __call()
*
* 作用:在调用对象中不存在的方法时就会出现错误,然后程序退出。
*
* 什么时候调用:就会在调用一个对象中不存在的方法时自动调用
*
* 这个方法需要两个参数
*
* __toString()
*
*直接输出对象引用时自动调用,用来快速获取对象的字符串表示的最便捷的方式
*
*
* 对象串行化(序列化):将一个对象转为二进制串
* 1.将对象长时间存储在数据库或文件中时使用
* 2.将对象在多个PHP文件中传输时
* serialize():参数是一个对象,返回来的就是串化后的二进制串
* unserialize:参数就是对象的二进制串,返回来就是新生成的对象
*
* __sleep()
* 是在序列化时自动调用的方法
*
* 作用:可以将一个对象部分串行化(序列化)
* 只要这个方法中返回一个数组,数组中有几个成员属性
*
* __wakeup()
* 是在反序列化自动调用的方法
*
* 是对象重新诞生的一个过程(__construct(),__clone(),__wakeup())
*
*
* __autoload()
*注意:其他的魔术方法都是在类中添加起作用,这是唯一一个不在类中添加的方法
*只要在页面中使用到一个类,只要用到类名就会自动将类名传给这个参数
*
*
* __clone()
* 克隆对象使用__clone去克隆
*
* 原本(原来的对象)
*
* 副本(复制出来的对象
*
* __clone()就是在克隆对象时自动调用的方法
*
* 作用:
*
* 只要一个对象一诞生,就要有初始化的动作,和构造方法作用相似
* 在__clone()方法中的$this关键字,代表的是副本的对象,$that代表原本的对象
*
*
*
*
*
*/
class Person{
var $name;
var $age;
var $sex;
const HOST=&quot;localhost&quot;;//类中声明常量
var static $country=&quot;China&quot;;//使用static,静态的成员属性
function __construct($name,$age,$sex){
$this->name=$name;
$this->age=$age;
$this->sex=$sex;
echo &quot;###############&quot;;
}
//静态的方法
static function test(){
echo &quot;test test test <br>&quot;;
}
function __call($methodName,$args){
echo &quot;调用的方法{$methodName}(参数:&quot;;
print_r($args);
echo &quot;)不存在&quot;;
}
function __toString(){
return &quot;{$this->name}1111111111122222<br>&quot;;
}
//克隆对象时自动调用
function __clone(){
$this->name=&quot;副本&quot;;
}

//此方法不能被覆盖
final public function say(){
echo &quot;我的名字:{$this->name},我的年龄{$this->age}:,我的性别:{$this->sex}<br/>&quot;;
}
protected function eat(){
echo &quot;wwwwwwwwwwwwwwwwwwwww<br>&quot;;
}
function run(){
echo self::HOST;//类内部访问常量
}
protected $name
protected $age;
protected $sex;
}

class Student extends Person{
var $school;
function __construct($name,$age,$sex,$school){
parent::__construct();
$this->school=$school;
}

protected function say(){
parent::say();
echo &quot;我所在的学校{$this->school}<br/>&quot;;
}
function study(){
echo &quot;{$this->name}在学习<br/>&quot;;
}
}
echo Person::$country;//访问静态成员
echo Person::HOST;//外部访问常量
$p=new Person();
echo $p;//会自动调用__toString()
$p1=clone $p;//克隆

//__autoload使用
function __autoload($className){//每次使用类名都会调用此函数,并把类名传给参数
include &quot;./&quot;.$className.&quot;.class.php&quot;;
}

?>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-105744-1-1.html 上篇帖子: php pack、unpack、ord 函数使用方法(二进制流接口应用实例) 下篇帖子: PHP的日期操作 增加减少(一个月以内)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表