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

百度网站推广怎么做鞍山做网站比较好的公司

百度网站推广怎么做,鞍山做网站比较好的公司,叫别人做网站要给什么东西,广告联盟赚钱平台PHP魔术方法 PHP 中的魔术方法是一组特殊的方法#xff0c;它们在特定情况下自动被调用。这些方法的名称都是以两个下划线#xff08;__#xff09;开头。魔术方法提供了一种方式来执行各种高级编程技巧#xff0c;使得对象的行为可以更加灵活和强大。以下是一…PHP魔术方法 PHP 中的魔术方法是一组特殊的方法它们在特定情况下自动被调用。这些方法的名称都是以两个下划线__开头。魔术方法提供了一种方式来执行各种高级编程技巧使得对象的行为可以更加灵活和强大。以下是一些常见的PHP魔术方法 __construct(): 构造函数当一个新对象被创建时调用。__destruct(): 析构函数当一个对象不再被使用时调用。__call($name, $arguments): 当调用一个对象中不存在的方法时调用。__callStatic($name, $arguments): 当调用一个静态方法不存在时调用。__get($name): 当读取一个不可访问的属性时调用。__set($name, $value): 当设置一个不可访问的属性时调用。__isset($name): 当对不可访问的属性调用 isset() 或 empty() 时调用。__unset($name): 当对不可访问的属性调用 unset() 时调用。__sleep(): 在序列化对象之前调用通常用于清理任务或返回数组中的哪些属性需要被序列化。__wakeup(): 在反序列化对象时调用通常用于重新建立数据库连接或执行其他初始化操作。__toString(): 当对象被当作字符串使用时调用例如在 echo 语句中。__invoke(): 当尝试将对象当作函数调用时执行。__set_state($array): 当调用 var_export() 且返回的结果被执行时调用。__clone(): 当对象被克隆时调用。 这些魔术方法提供了对对象生命周期中各种事件的控制以及对对象行为的定制化。正确和恰当地使用这些方法可以使你的代码更加健壮和灵活 掌握PHP魔术方法分为触发时机---功能---参数--返回值 最低要求起码知道触发时机不然对之后pop链的学习影响会很大 很感谢陈腾老师的教导 接下来我会带领大家一一学习PHP魔术方法 接下来都会是代码加解释的形式和大家一起·学习 1.——construct ?phphighlight_file(__FILE__);class User {    public $username;    public function __construct($username) {        $this-username  $username;        echo 触发了构造函数1次 ;    }}$test  new User(benben);$ser  serialize($test);unserialize($ser);?输出触发了构造函数1次 这里是先定义一个类User下面的public是全局变量的意思这里提一下如果使用的是private那就是属于一个私有属性也就是说你只能在User这个类里面使用如果你在外面调用了它肯定是不行的。接下来public function __construct($username) {        $this-username  $username;        echo 触发了构造函数1次 ;    }这里就是一个魔术方法 换句话来说就是user这个类里面有username和一个魔术方法后面的代码就是调用user这个类里面的属性而已 搞懂了代码就好说了$test  new User(benben);这里是实例化对象所以只会在这行代码触发输出“触发了构造函数1次” 这个__construct()魔术方法很简单 触发时机实例化对象时会触发比如$test  new User(benben);)这里就时实例化对象 功能就是提前清理不必要的内容 参数非必要 返回值 2.__destruct() 在对象的所有的引用被删除或者当对象被显示销毁时执行的魔术方法 比如?phphighlight_file(__FILE__);class User {    public function __destruct()    {        echo 触发了析构函数1次.br / ;    }}$test  new User(benben);$ser  serialize($test);unserialize($ser);?触发了析构函数1次 触发了析构函数1次 __destruct() 触发时机对象引用完成或对象被销毁反序列化之后 功能 参数 返回值 来到题目 ?php highlight_file(__FILE__);error_reporting(0); class User {     var $cmd  echo dazhuang666!!; ;     public function __destruct()     {         eval ($this-cmd);     } }$ser  $_GET[benben];unserialize($ser); 拿到这道题目就直接徒手构造就好了benbenO:4:User:1:{s:3:cmd;s:13:system(id);;} 首先是objectUser对应的是四个字符里面只有1个成员属性最后的“;”不要忘记。 直接拿下这里直接反序列化的时候就已经触发了——dstruct() 3._sleep() 触发时机_slee[()先执行序列化之后再执行也就是序列化前调用 功能 参数 返回值 ?phphighlight_file(__FILE__);class User {    const SITE  uusama;    public $username;    public $nickname;    private $password;    public function __construct($username, $nickname, $password)    {        $this-username  $username;        $this-nickname  $nickname;        $this-password  $password;    }    public function __sleep() {        return array(username, nickname);    }}$user  new User(a, b, c);echo serialize($user);?O:4:User:2:{s:8:username;s:1:a;s:8:nickname;s:1:b;} 这串代码的意思是一个对象user还有它的对应属性。 接下来直接_construct魔术方法,因为最下面new User会触发 这个魔术方法但是后面的sleep遇到serialize又会触发魔术方法_sleep()这里先触发——construct()在实例化前触发并且把usernamenicknamepassword为别赋值a,b,c 这里本来应该输出的是三个参数的但是后面的sleep又触发魔术方法结果password就不输出 4._wakeup() 这个在做反序列化unserialize之前触发 触发时机这个在做反序列化unserialize之前触发 功能 参数 返回值返回void ?php highlight_file(__FILE__);error_reporting(0); class User {     const SITE  uusama;     public $username;     public $nickname;     private $password;     private $order;     public function __wakeup() {         system($this-username);     } }$user_ser  $_GET[benben];unserialize($user_ser);? ?benbenO:4:”User”:1:{s:8:”username”;s:2:”id”;} 这里构造1个就好因为_wakeup()过后就只调用username其他几个属性就没有必要写了 Ps反序列化里面对字符串包裹就只能使用双引号单引号不识别 5._tostring() 触发时机把对象被当成字符串调用 功能 参数 返回值 ?phphighlight_file(__FILE__);error_reporting(0);class User {    var $benben  this is test!!;         public function __toString()         {             return 格式不对输出不了!;          }}$test  new User() ;print_r($test);echo br /;echo $test;?User Object ( [benben] this is test!! )格式不对输出不了!(这个命令是 $test)所触发的 把类User实例化并且赋值给$test,此时的$test是个对象调用对象可以使用print_ 或者是var_dump 但是如果使用echo或者print只能调用字符串的方式去调用对象即把对象当成字符串使用此时自动触发tostring() 也就是说后面的echo $test直接当成字符串输出了这里会触发魔术方法tostring() 6._invoke() 触发时机把对象被当成函数调用 功能 参数 返回值 ?phphighlight_file(__FILE__);error_reporting(0);class User {    var $benben  this is test!!;         public function __invoke()         {             echo  它不是个函数!;          }}$test  new User() ;echo $test -benben;echo br /;echo $test() -benben;?this is test!!它不是个函数! 其实跟tostring差不多就是echo $test() -benben这里直接把它当成函数输出导致了魔术方法触发 7._call() 触发时机调用了一个根本不存在的方法 功能 参数2个参数$arg1,$arg2 返回值调用的不存在的方法的名称和参数 ?phphighlight_file(__FILE__);error_reporting(0);class User {    public function __call($arg1,$arg2)    {        echo $arg1,$arg2[0];          }}$test  new User() ;$test - callxxx(a);?输出callxxx,a $test new User()这句话是把new User实例化成为一个对象给$test接下来从test调用出来一个方法callxxx并且给他传了个参数是a但是这里根本没有callxxx所以做不到这里就触发了魔术方法 $arg1是方法$arg2是参数 8._callstatic() 触发时机静态调用或调用成员常量时使用 功能 参数2个参数$arg1,$arg2 返回值调用的不存在的方法的名称和参数 ?phphighlight_file(__FILE__);error_reporting(0);class User {    public function __callStatic($arg1,$arg2)    {        echo $arg1,$arg2[0];          }}$test  new User() ;$test::callxxx(a);?callxxx,a 这里跟_call()差不多一样的只不过这个是静态调用比如$test::callxxx(a);时使用而已不是静态调用就不会触发你可以把::改一下看看别的还会不会触发 9.__get() 触发时机调用的成员属性不存在 功能 参数 返回值不存在的成员属性的名称 ?php highlight_file(__FILE__); error_reporting(0); class User {     public $var1;     public function __get($arg1)     {         echo  $arg1;     } } $test  new User() ; $test -var2; ? 输出 var2 这里其实就是少了一个参数var2但是$test -var2;这里却要输出var2所以就会触发get魔术方法自动帮你添加一个var2上去 10._set() 触发时机给不存在的成员属性赋值 功能 参数 返回值不存在的成员属性的名称和赋的值 ?php highlight_file(__FILE__); error_reporting(0); class User {     public $var1;     public function __set($arg1 ,$arg2)     {         echo  $arg1.,.$arg2;     } } $test  new User() ; $test -var21; ? 输出 var2,1 11._isset() 对一个被保护的属性或者根本就不存在的属性或者私有属性 触发时机对不可访问属性使用isset或empty时__isset就会被调用 功能 参数 返回值不存在的成员属性的名称 ?phphighlight_file(__FILE__);error_reporting(0);class User {    private $var;    public function __isset($arg1 )    {        echo  $arg1;    }}$test  new User() ;isset($test-var);? 输出var 比如这段代码因为这里的var只能在当前类中使用因为这是一个私有属性你出来后调用肯定不可以这里一定会触发——isset魔术方法最终顺利输出var 12._unset() 触发时机对不可访问属性使用__unset时 功能 参数 返回值不存在的成员属性的名称 ?php highlight_file(__FILE__); error_reporting(0); class User {     private $var;     public function __unset($arg1 )     {         echo  $arg1;     } } $test  new User() ; unset($test-var); ? 输出 var 13._clone() 触发时机使用clone关键字拷贝完成一个对象后新对象会自动调用定义的魔术方法__clone() 就是说使用clone克隆对象完成后就会触发魔术方法__clone() 功能 参数 返回值 ?php highlight_file(__FILE__); error_reporting(0); class User {     private $var;     public function __clone( )     {         echo  __clone test;           } } $test  new User() ; $newclass  clone($test) ? 输出 __clone test 真心希望我的文章能够让大家有所收获 总结
http://www.pierceye.com/news/374008/

相关文章:

  • 广州网站二级等保上海企业网站模板
  • 做任务赚话费的网站网站直播间 是怎么做的
  • 合肥住房城乡建设部的网站传媒公司是干嘛的
  • 网站建设公司盈利深圳保障性住房在哪里申请
  • 网站建设(信科网络)谷歌推广怎么开户
  • 活动策划网站有哪些温州网页设计美工
  • 网站描述代码怎么写做正规小说网站
  • 无锡外贸网站制作公司php网站开发薪资 深圳
  • 做卡盟网站赚钱吗为企业制定网络营销方案
  • lol视频网站模板网站定制案例
  • 海兴县网站建设郑州嵌入式培训机构
  • 网站建设怎么记账韩国 电商网站
  • 公司介绍网站怎么做的网站建设的广告语
  • 茂名网站建设托管阿里云 wordpress主机名
  • 投票活动网站怎么做郑州营销型网站制作教程
  • 如何做一个导航网站凡科建设网站怎么保存
  • 哪个网站能叫我做直播回放广州十大猎头公司排名
  • 四川网站建设那家好百度爱采购竞价
  • 怎么做提卡密网站万游wordpress 验证
  • 威宁住房和城乡建设局网站网站介绍怎么写
  • 百度站长平台快速收录wordpress hook机制
  • 衡水提供网站设计公司哪家专业网站维护简单吗
  • 域名购买后 怎么创建网站网站内部优化是什么
  • 做微信公众号第三网站整站外包优化公司
  • 济南协会网站设计团队网站后台建设编辑器
  • 行业查询网站拖式网站建设
  • 网站设计文献网站开发与维护岗位说明书
  • 公司制作网站东莞南城房价
  • 智能建站系统seo网站优化方案
  • 南宁网站建设找建站通成都seo推广