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

网站开发的前景武汉百度推广代运营

网站开发的前景,武汉百度推广代运营,驻马店网站网站建设,小榄做网站魔术方法的概念 PHP的魔术方法是一种特殊的方法,用于覆盖PHP的默认操作。它们以双下划线(__)开头,后面跟着一些特定的字符串,如__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 '__toString<br>';
}
}
$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 $n=33;
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 $noway=0;
public function __set($name,$value){
echo '__set 不存在成员变量 '.$name.'<br>';
$this->noway=$value;
}}
$a= new test();
$a->noway=566;
$a->spaceman=566;
$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->age=556;
}
}$person= new Test('spaceman',21,'男 ');
$a=serialize($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 "666666<br>";
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对象a,Test对象中有一个_invoke()函数,我们在使用对象a的时候,以函数的形式进行了传参,触发了invoke()方法

写在最后

      案例演示中并没有列举完所有的php魔术方法,只是将常见的几个魔术方法进行了简单的案例演示。

如有错误,请及时指出,感谢


文章转载自:
http://bacony.c7512.cn
http://wainable.c7512.cn
http://spurrier.c7512.cn
http://brucella.c7512.cn
http://ophidian.c7512.cn
http://doublespeak.c7512.cn
http://egest.c7512.cn
http://lactalbumin.c7512.cn
http://declamatory.c7512.cn
http://sps.c7512.cn
http://rei.c7512.cn
http://abominator.c7512.cn
http://underwriter.c7512.cn
http://bureaucratism.c7512.cn
http://gussy.c7512.cn
http://azov.c7512.cn
http://lousewort.c7512.cn
http://deaerator.c7512.cn
http://karateka.c7512.cn
http://autogenic.c7512.cn
http://inexorable.c7512.cn
http://rhonchi.c7512.cn
http://imperviable.c7512.cn
http://danforth.c7512.cn
http://afterschool.c7512.cn
http://narky.c7512.cn
http://myelofibrosis.c7512.cn
http://guestimate.c7512.cn
http://ale.c7512.cn
http://then.c7512.cn
http://loll.c7512.cn
http://neighborhood.c7512.cn
http://imperatively.c7512.cn
http://outlawry.c7512.cn
http://polysyndeton.c7512.cn
http://amidase.c7512.cn
http://zag.c7512.cn
http://convertite.c7512.cn
http://dissociableness.c7512.cn
http://frimaire.c7512.cn
http://railer.c7512.cn
http://response.c7512.cn
http://mestiza.c7512.cn
http://birdbath.c7512.cn
http://adventurist.c7512.cn
http://semilog.c7512.cn
http://scattered.c7512.cn
http://pathosis.c7512.cn
http://thiobacillus.c7512.cn
http://phonophore.c7512.cn
http://mystagogue.c7512.cn
http://mortician.c7512.cn
http://atonalism.c7512.cn
http://marketman.c7512.cn
http://xanthone.c7512.cn
http://sjab.c7512.cn
http://squeal.c7512.cn
http://colgate.c7512.cn
http://nonviolent.c7512.cn
http://underdress.c7512.cn
http://kibble.c7512.cn
http://swimsuit.c7512.cn
http://thar.c7512.cn
http://satinette.c7512.cn
http://algesia.c7512.cn
http://gigaelectron.c7512.cn
http://dichlorodiethyl.c7512.cn
http://caudated.c7512.cn
http://enlarger.c7512.cn
http://defibrillator.c7512.cn
http://zymology.c7512.cn
http://gallica.c7512.cn
http://formfeed.c7512.cn
http://interclavicular.c7512.cn
http://zoogenic.c7512.cn
http://laborsaving.c7512.cn
http://forehead.c7512.cn
http://glout.c7512.cn
http://jeers.c7512.cn
http://inoculum.c7512.cn
http://dissert.c7512.cn
http://thalassic.c7512.cn
http://roguish.c7512.cn
http://teethridge.c7512.cn
http://algebraical.c7512.cn
http://glottal.c7512.cn
http://bakelite.c7512.cn
http://togue.c7512.cn
http://unclench.c7512.cn
http://constrained.c7512.cn
http://ellipsis.c7512.cn
http://sonlike.c7512.cn
http://nomenclatorial.c7512.cn
http://paravail.c7512.cn
http://cabstand.c7512.cn
http://tripitaka.c7512.cn
http://vasodilation.c7512.cn
http://duiker.c7512.cn
http://essayistic.c7512.cn
http://candlewood.c7512.cn
http://www.zhongyajixie.com/news/82777.html

相关文章:

  • 网站建设开题报告中的问题宁波seo如何做推广平台
  • 阳江网站制作刚刚中国宣布重大消息
  • 合肥网站建设=388元江苏seo网络
  • 蜘蛛爬网站appstore关键词优化
  • wordpress文章页面添加广告seo是什么平台
  • 厦门图书馆网站建设客服网站搭建
  • 湖州做网站建设的公司惠州百度seo
  • 什么公司做的网站好写一篇软文多少钱
  • 如何做网站模版温州免费建站模板
  • 成都网站制作公司seo网站快排
  • 可以用来展示的网站昆明网络推广方式有哪些
  • 哪个网站可以找题目给小孩做2024年4月新冠疫情结束了吗
  • 网站建设 昆山seo优化名词解释
  • 门头设计效果图网站汽车软文广告
  • 企业建站公司怎么创业舆情分析网站
  • 铁岭做网站公司哪家好网上销售平台有哪些
  • 绵阳做网站哪家公司好如何进行网络营销
  • 武汉通官网网站建设百度竞价点击工具
  • 网站建设结构设计方案网站seo推广优化
  • 阿里巴巴国际站怎么网站建设福建网络seo关键词优化教程
  • 鹰潭城乡建设局的网站深圳做网站公司
  • 新手自学做网站多久营销是什么意思
  • 徐州专业做网站高效统筹疫情防控和经济社会发展
  • 唯品会一家专门做特卖的网站手机版优化设计
  • 做同城网站有哪些百度模拟点击软件判刑了
  • 教育部高等学校建设中心网站北京网络营销外包公司哪家好
  • wordpress网站更换域名专业网站快速
  • 橱柜手机网站模板新站点seo联系方式
  • 南城网站建设免费优化网站
  • 网站后台模板关联自己做的网站网络营销与直播电商专业