当前位置: 首页 > news >正文

做平面设计图的网站做微信商城设计网站

做平面设计图的网站,做微信商城设计网站,成都装修设计公司推荐,用python做网站魔术方法的概念 PHP的魔术方法是一种特殊的方法#xff0c;用于覆盖PHP的默认操作。它们以双下划线#xff08;__#xff09;开头#xff0c;后面跟着一些特定的字符串#xff0c;如__construct()、__destruct()、__get()等。这些魔术方法在对象执行特定操作时被自动调用…魔术方法的概念 PHP的魔术方法是一种特殊的方法用于覆盖PHP的默认操作。它们以双下划线__开头后面跟着一些特定的字符串如__construct()、__destruct()、__get()等。这些魔术方法在对象执行特定操作时被自动调用从而允许开发人员对这些操作进行自定义处理。 常见的魔术方法列举 __construct:在实例化一个类时触发__destruct:在一个实例对象被销毁时触发__set(string $name , mixed $value):设置一个不能访问的成员属性时触发__get(string $name):获得一个不能访问的成员属性时触发__call($name,$arguments):访问一个不能访问的成员方法时触发__callStatic($name,$arguments):访问一个不能访问的成员静态方法时触发__toString:将一个对象实例被当成字符串时触发__clone:在创建一个新对象时触发__invoke:当以函数的方式调用对象时触发__sleep:在对一个对象的数据处理不需要保存全部数据时触发如 serialize()序列化时__wakeup: 在unserialize()时会先检查是否有__wakeup方法__unset(string $name):在一个不可访问的对象属性被unset时触发__isset(string $name):在一个不可访问的对象属性被isset,empty时触发__debugInfo:当一个对象被var_dump时触发__set_state:当一个对象被var_export时触发 案例分析 __construct()函数在一个对象创建的时候如果类中有这个方法就会被触发 __destruct()函数在一个对象被销毁的时候被触发销毁可以是程序执行完成后自动销毁也可以是使 用相关方法进行人为销毁 ?php //__construct() 和__destruct() class Test{ public $name; public $age; public $string; public function __construct($name,$age,$string){ echo __construct 初始化.br; $this-name$name; $this-age$age; $this-string $string; } function __destruct(){ echo __destruct 类执行完毕.br; }} $test new Test(spaceman,566,Test String); unset($test);//人为销毁对象 echo 第一种执行完毕 .br; echo ----------------br; $test2 new Test(Spaceman,5566,Test String); echo 第二种执行完毕 .br; //程序自动销毁 结果展示 unset()是主动销毁对象可以触发__destruct()函数在程序结束后创建的对象也会被自动销毁因此也会触发 destruct()函数这种执行会在所有程序结束后执行为此我们可以看到两种方式的执行的显示结果有区别 __toString()函数当对象被当做字符串使用的时候会被调用 ?php class Test{ public $variable This is a string; public function good(){ echo $this-variable.br/;public function __toString(){ return __toStringbr; } } $a new Test; $a-good(); echo $a; 结果展示 变量a是我们新建的一个对象但是我们如果将其输出就会自动触发__toString()魔术方法 __call()函数在调用不存在的方法的时候会触发执行 ?php class Test{ public function good($number,$string){ echo 存在good()方法 .br; echo $number.-------------.$string.br; } public function __call($method,$args){ echo 不存在 .$method.方法 .br; var_dump($args); }} $a new Test(); $a-good(566,nice); $b new Test(); $a-sperman(788,no); 结果展示 当我们创建一个对象这个对象中有__call()方法如果我们使用这个对象的时候调用了类中不存在的方法就会触发call()魔术方法 __get()函数在调用不存在的成员变量的时候会被调用 class Test{ public $n33; public function __get($name){ echo __get不存在成员变量 .$name.br;} }$a new Test(); //a中存在的成员变量 echo $a-n; echo br; //a中不存在的成员变量 echo $a-spaceman; 结果展示 如果一个类的中有__get()方法我们使用该类实例化的对象如果调用其中不存在的成员属性就会触发__get()方法 __set()函数设置一个对象的属性时若对象的属性存在那么就会直接设置对象的属性如果对象的 属性不存在那么就会触发__set()方法 ?php class Test{ public $data 100; public $noway0; public function __set($name,$value){ echo __set 不存在成员变量 .$name.br; $this-noway$value; }} $a new test(); $a-noway566; $a-spaceman566; $a-get();结果展示 设置一个对象的属性的时候如果属性值存在那么就直接赋值。如果属性值不存在就会调 用set函数 _sleep()函数 使用serialize()函数会被调用 ?php class Test{ public $name; public $age;public $tring;public function __construct($name,$age,$string){ echo __construct 初始化 .br;$this-name$name;$this-age$age;$this-string$string;} public function __sleep(){echo 当类外部使用serialize()时会调用这里的sleep()方法br; return array(name,age); } } $a new Test(Spaceman,556,Test String); serialize($a);结果展示 我们创建完对象后就会触发里面的__sleep()函数执行里面的代码 _wakeup()函数在unserialize()时候触发 ?php class Test { public $sex; public $name; public $age; public function __wakeup(){ echo 当外部实体使用unserialize是会调用这里的wakeup()方法br; $this-age556; } }$person new Test(spaceman,21,男 ); $aserialize($person); //echo $a.br; var_dump(unserialize($a)); 结果展示 我们创建完对象后进行反序列化就会触发里面的__wakeup()函数执行里面的代码 __isset()函数当对不可访问属性调用 isset() 或 empty() 时__isset() 会被触发 ?php class Person{public $sex;private $name;private $age;public function __construct($name, $age, $sex){$this-name $name;$this-age $age;$this-sex $sex;}// __isset()当对不可访问属性调用 isset() 或 empty() 时__isset() 会被调用。public function __isset($content){echo 当在类外部使用isset()函数测定私有成员 {$content} 时自动调用br;return isset($this-$content);} }$person new Person(spaceman, 25,男); echo ($person-sex),br; echo isset($person-name);结果展示 我们使用__isset()函数去判断了私有属性的话就会自动触发isset()其中的内容 __unset()函数在不可访问的属性上使用unset()时触发 销毁对象的某个属性时执行此函数 class Person{public $sex;private $name;private $age;public function __construct($name, $age, $sex){$this-name $name;$this-age $age;$this-sex $sex;}// __unset()销毁对象的某个属性时执行此函数public function __unset($content) {echo 当在类外部使用unset()函数来删除私有成员时自动调用的br;echo isset($this-$content).br;} }$person new Person(spaceman, 21,男); // 初始赋值 echo 666666br; unset($person-name);//调用 属性私有 unset($person-age);//调用 属性私有 unset($person-sex);//不调用 属性共有 结果展示 当我们使用unset销毁对象里面的私有属性就会触发其中的unset()方法上例中我们销毁了两个私有属性为此unset方法被触发了两次 _invoke()以调用函数的方式调用一个对象时__invoke() 方法会被自动调用 ?php class Test{// _invoke()以调用函数的方式调用一个对象时__invoke() 方法会被自动调用public function __invoke($param1, $param2, $param3) {echo 这是一个对象br;var_dump($param1,$param2,$param3);} }$a new Test(); $a(spaceman,21,男); 结果展示 我们创建了一个Test对象aTest对象中有一个_invoke()函数我们在使用对象a的时候以函数的形式进行了传参触发了invoke()方法 写在最后 案例演示中并没有列举完所有的php魔术方法只是将常见的几个魔术方法进行了简单的案例演示。 如有错误请及时指出感谢
http://www.w-s-a.com/news/371962/

相关文章:

  • 遵义网站开发培训上海中高风险地区名单最新
  • 禹州市门户网站建设做网站可以申请个体户么
  • 大良营销网站建设效果彩票网站搭建 做网站
  • 做网站的公司为什么人少了在中国如何推广外贸平台
  • 盘锦网站制作工业电商网站怎么配色
  • 白云企业网站建设seo排名点击软件
  • wordpress跨站脚本攻击漏洞国外注册的域名国内能用吗
  • 西部数码网站管理助手2工信部资质查询网站
  • 公司网站哪个建的好吉林网站制作
  • 视频网站怎么引流wordpress私人玩物
  • 我的家乡湛江网站设计新钥匙网站建设
  • 辽宁网站推广爱前端wordpress5.0.3主题
  • python怎么做网站贵阳网站制作
  • 深圳网站的优化seo网络推广有哪些
  • 网站建设实习报告范文荆州市城市建设档案馆网站
  • 网站开发信息平台项目总结企业网站如何推广
  • 网站备案名称规定手机免费h5制作软件
  • 接网站建设单子的网站网页设计尺寸多大
  • 订制型网站费用做网站的问题
  • 淮阳住房和城乡建设网站桂林新闻桂林人论坛
  • 公司网站建设价格标准老版本网站开发工具
  • 门户网站开发费怎做账做网站交互demo工具
  • 中山最好的网站建设黄村网站建设价格
  • 企业网站首页应如何布局互联网营销师证书报名入口
  • 绍兴做网站哪家好篮球网站设计
  • 鹤岗市城乡建设局网站西域电商平台官网
  • 外贸网网站建设蓝色管理系统网站模版
  • 网站服务器关闭阿里巴巴logo
  • 青岛 网站制作公司乐从网站制作
  • wordpress 微网站模板怎么用wordpress 文档下载