电脑安全

您当前的位置:主页 > 电脑安全 >

第四节--构造函数和析构函数-网络编程

来源:[db:来源]标题:   函数    编辑:电脑技术全能网 时间:2019-09-19 12:34

原标题:第四节--构造函数和析构函数-网络编程
   /*  +-------------------------------------------------------------------------------+  | = 本文为Haohappy读<<Core PHP Programming>>  | = 中Classes and Objects一章的条记  | = 翻译为主+团体心得  | = 为幸免能够产生的不用要的费事请勿转载,感谢  | = 欢送批判斧正,盼望和全部PHP喜好者独特提高!  | = PHP5研讨核心: http://blog.csdn.net/haohappy2004  +-------------------------------------------------------------------------------+  */  第四节--结构函数和析构函数  假如你在一个类中申明一个函数,定名为__construct,这个函数将被当做是一个结构函数并在树立一个工具实例时被履行. 清晰地说,__是两个下划线. 就像别的任何函数一样,结构函数能够有参数或许默许值. 你能够界说一个类来树立一个工具并将其属性全放在一个语句(statement)中.  你也能够界说一个名为__destruct的函数,PHP将在工具被烧毁前挪用这个函数. 它称为析构函数.  继续是类的一个强盛功效. 一个类(子类/派生类)能够继续另一类(父类/基类)的功效. 派生类将包括有基类的全部属性和方式,并能够在派生类中加上其余属性和方式. 你也能够覆写基类的方式和属性. 就像3.1.2中表现的,你能够用extends要害字来继续一个类.  你能够想晓得结构函数是怎样被继续的. 当它们和别的方式一同被继续时,他们不会在创立工具时被履行.  假如你须要这个功效,你须要用第二章提到的::运算符. 它同意你指向一块定名空间. parent指向父类定名空间,你能够用parent::__construct来挪用父类的结构函数.  一些面向工具言语在类以后定名结构函数. PHP的前几个版本也是如斯,到当初这类方式依然无效.也就是:假如你把一个类定名为Animal而且在此中树立一个定名也是Animal的方式,则这个方式就是结构函数.假如一个类的同时领有__construt结构函数和与类名雷同的函数,PHP将把__construct看做结构函数.这使得用从前的PHP版本所写的类依然能够应用. 但新的剧本(PHP5)应该应用__construct.  PHP的这类新的申明结构函数的方式能够使结构函数有一个唯一无二的称号,不管它地点的类的称号是甚么. 如许你在转变类的称号时,就不须要转变结构函数的称号.  你能够在PHP中给结构函数一个像别的类方式一样的拜访方法. 拜访方法将会影响从必定范畴内实例化工具的才能. 这同意完成一些牢固的计划形式,如Singleton形式.  析构函数,相同于结构函数. PHP挪用它们来将一个工具从内存中烧毁. 默许地,PHP仅仅开释工具属性所占用的内存并烧毁工具相干的资本. 析构函数同意你在应用一个工具以后履行恣意代码来肃清内存.  当PHP决议你的剧本不再与工具相干时,析构函数将被挪用. 在一个函数的定名空间内,这会产生在函数return的时间. 关于全局变量,这产生于剧本停止的时间. 假如你想明白地烧毁一个工具,你能够给指向该工具的变量调配任何别的值. 平日将变量赋值勤为NULL或许挪用unset .  上面的例子中,盘算从类中实例化的工具的个数. Counter类从结构函数开端增值,在析构函数减值.  一旦你界说了一个类,你能够用new来树立一个这个类的实例. 类的界说是计划图,实例则是放在拆卸线上的元件. New须要类的称号,并前往该类的一个实例. 假如结构函数须要参数,你应该在new后输出参数.  <?php   class Counter   {     private static $count = 0;      function __construct()     {       self::$count++;     }      function __destruct()     {       self::$count--;     }      function getCount()     {       return self::$count;     }   }    //树立第一个实例   $c = new Counter();    //输入1   print($c->getCount() . "<br>/n");    //树立第二个实例   $c2 = new Counter();    //输入2   print($c->getCount() . "<br>/n");    //烧毁实例   $c2 = NULL;    //输入1   print($c->getCount() . "<br>/n");  ?>   当你新建了一个实例,内存会被预备来存储全部属性. 每个实例有本人独占的一组属性. 但方式是由该类的全部实例同享的.   注:本文章为原创文章,版权归文章作者与超出PHP网站全部,未经本站批准,制止任何贸易转载。非红利网站及团体网站转载请说明出处,感谢配合!