仓酷云

标题: PHP网站制作之第四节--机关函数和析构函数 -- Classe... [打印本页]

作者: 飘灵儿    时间: 2015-2-4 00:21
标题: PHP网站制作之第四节--机关函数和析构函数 -- Classe...
PHP原始为Personal Home Page的缩写,已经正式更名为 "PHP: Hypertext Preprocessor"。注意不是“Hypertext Preprocessor”的缩写,这种将名称放到定义中的写法被称作递归缩写。object|php5|函数   /*
+-------------------------------------------------------------------------------+
| = 本文为Haohappy读<<Core PHP Programming>>
| = 中Classes and Objects一章的笔记
| = 翻译为主+团体心得
| = 为防止能够产生的不用要的费事请勿转载,感谢
| = 接待品评斧正,但愿和一切PHP喜好者配合前进!
+-------------------------------------------------------------------------------+
*/

第四节--机关函数和析构函数

假如你在一个类中声明一个函数,定名为__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");
?>





当你新建了一个实例,内存会被筹办来存储一切属性. 每一个实例有本人独有的一组属性. 但办法是由该类的一切实例同享的.  当然你可以把你最基本的功能放出来的时候就放出来,比如放到论坛上,让大家都参与,
作者: 谁可相欹    时间: 2015-2-4 12:32
本文当是我的笔记啦,遇到的问题随时填充
作者: 爱飞    时间: 2015-2-9 22:37
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
作者: 小魔女    时间: 2015-2-10 04:48
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
作者: 若天明    时间: 2015-2-28 19:58
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
作者: 老尸    时间: 2015-3-4 15:59
,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。
作者: 乐观    时间: 2015-3-6 23:06
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
作者: 飘飘悠悠    时间: 2015-3-11 06:40
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
作者: 仓酷云    时间: 2015-3-11 23:07
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
作者: 若相依    时间: 2015-3-12 19:16
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
作者: 透明    时间: 2015-3-13 02:10
,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。
作者: 再见西城    时间: 2015-3-20 10:27
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
作者: 金色的骷髅    时间: 2015-3-21 05:37
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
作者: 不帅    时间: 2015-3-24 12:40
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
作者: 柔情似水    时间: 2015-3-24 21:15
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
作者: 冷月葬花魂    时间: 2015-3-27 08:08
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
作者: 兰色精灵    时间: 2015-4-3 04:09
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
作者: 分手快乐    时间: 2015-5-3 11:39
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
作者: 山那边是海    时间: 2015-6-12 04:10
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2