首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

php学习札记

2012-12-26 
php学习笔记************************************************php基础start****************************

php学习笔记

************************************************php基础start*****************************************************

1.什么是php?
php是一种服务器端脚本语言,它是专门为web而设计的。在一个HTML页面中,你可以嵌入PHP代码,这些代码在每次页面访问时执行
。php代码将在web服务器中被解释并且生成HTML或访问者看到的其他输出、

2.php標記的几种写法:"<?php? ?>" "<? echo ?>" "<% echo '<p>hello php</p>';%>" "<SCRIPT LANGUAGE='php' echo '<p> hello php.</p>'; </SCRIPT>"

3.";"是分隔字符,"."是连接字符

4.php的注释:多行注释应该以/*为开始,*/为结束。多行注释无法嵌套;单行注释可以用// 或 #

5.php的变量都是以?$符号开始的

6.通过变量,可以有3种方法来访问表单数据
$tireqty 简短风格——需要将register_globals配置选项设置为on,其默认值与版本有关
$_POST['tireqty'] 中等风格——post是根据表单提交的信息,还有get。不管是post还是get都可以用request方法获得
$_HTTP_POST_VARS['tireqty'] 冗长风格

7.php会解析""里面的内容,而''则是单纯的文本

8.php4的允许指定长字符串:
echo <<<thEnd
line1
line2
line3
theEnd
使用定界符要注意以下几点:

开始和结束的标识符必须相同。标识符必须由字母,数字,下划线构成。而且不能以数字开头

开始标识符前面必须有三个左尖括号“<<<”.结束标识符必须在一行开始处,前面不能有空格或任何其他多余的字符串。标识符后面的任何空格都会导致语法错误

定界符与双引号的效果相同,支持各种转义字符。唯一的区别是双引号不需要转义就能直接显示

9.php标识符:
标识符可以是任何长度,而且可以由任何字母,数字,下划线组成
标识符不能以数字开头
标识符大小写敏感,但是函数名对大小写不敏感
一个变量允许与函数同名,但为避免混淆应尽量避免

10.php的变量不用先声明后使用,当给变量赋值是就创建了一个变量。可以使用赋值操作符(=)给一个变量赋值,也可以将一个变量值赋
给另一个变量,php将‘自动的’获得输入的数据类型呢,一旦在变量中检索变量值,将返回具有相同类型的数据。
php的可变变量,即名称是由一个变量的值决定的:
$varname = 'tireqty';
$$varname = 5;

$tireqty = $$varname;//两个值相等,都指向可变变量

php变量的定义
define('GOODS',100);——使用的收不用$符号,可以直接用名称

?


11.php的数据类型:
Integer(整数)——用来代表整数
Float(浮点型,也叫Double,双精度)——用来表示所有的实数
String(字符串)——用来表示字符串
Boolean(布尔)用来表示true或者false
Array(数组)——用来保存同类型的多个数据项
Object(对象)——用来保存类的实例
NULL(空)——如被赋值就是null类型
resource(资源)——特定的内置函数将返回resource类型的变量,他们都代表外部资源。基本上不能直接操作一个resource变量,但是他们通常都
将被函数返回,而且必须作为参数传递给其他函数、

12.理解變量的作用域
內置超級全局變量可以再腳本的任何地方使用和可見
常量,一旦被聲明可以在全局可見,他們在函數內外使用
在一個腳本中申明的全局變量在整個腳本都是可見的,但不是在函數內部
函數內部使用的變量申明為全局變量時,其名稱要與全局變量名稱一致
在函數內部創建并申明為靜態的變量無法在函數外部可見,但是可以再函數的多次執行過程中保持該值
在函數內部創建的變量對函數來說是本地的,而當函數終止時,該變量也就不存在

13.超級全局變量的完整列表如下所示:
$GLOBALS——所有全局變量數組
$_SERVER——服務器環境變量數組
$_GET——通過get方法传递给该脚本的变量数组
$_POST——通过post方法传递给该脚本的变量数组
$_COOKIE——cookoe变量数组
$_FILES——与文件上传相关的变量数组
$_ENV——环境变量数组
$_REQUEST——所有用户输入的变量数组
$_SESSION——会话变量数组

14.恒等于操作符===(三个等号):操作符两边的操作数相等并且具有相同的数据类型时,才返回true
例如0=='0'将为true 但是0==='0'为false

15.逻辑操作符&&和||与and和or相同,后者的优先级要低于前者

16.@为错误印制操作符,错误印制操作符可以在任何表达式前面使用,即任何有值的或者可以计算出值的表达式之前。使用@将会把警告印制
。如果通过这个方法印制了一些警告,一旦遇到一个警告,就要写一些错误处理代码。如果已经启用了php的track_errors特性,错误信息将会被
保存在全局变量$php_errormsg中

17.执行操作符:执行操作符实际上是一对操作符,它是一对反向单引号(``)。它与~位于键盘相同的位置。php将试着将反向单引号之间的命令
当做服务器端的命令来执行。表达式的值就是命令的执行结果。

18.类型操作符instanceof:允许检查一个对象是否是特定类的实例

19.测试变量的状态
boolean isset(mixed var)——如果这个变量存在则返回true,否则返回false
void unset(mixed var)——销毁一个变量
boolean empty(mixed var)——检查一个变量是否存在,以及它的值是否为空和非0,相应的返回true或false

20.变量的重解释
可以通过一个函数来水仙转换变量数据类型的目的
int intval(mixed var);
float floatvar(mixed var);
string strval(mixed var);

21.重控制结构或脚本中跳出
break——本次循环结束后终止
continue——跳过本次循环,继续下一次循环
exit——终止继续运行

22.使用可替换的控制结构语法:这个新关键字可以是endif,endswitch,endwhile,endfor,endforeach对于do。。while没有可替换的语句
if($totle == 0){
?echo 'hello php';
}
等价于
if($totle == 0);
echo 'hello php';
endif;

23.使用declare
declare(directive){
?//block
}
这种结构用来设置代码的执行指令——也就是关于后续代码如何运行的规则,目前,只实现了一个执行指令,ticks。可以通过插入指令
ticks=n来设置它,它允许在代码块内部每隔n行代码运行特定的函数

************************************************php基础end*****************************************************

?

?

************************************************php文件start*****************************************************

?

24.php的内置变量$_SERVER['DOCUMENT_ROOT']这个变量指向了web服务器文档树的根,我们使用".."表示文档根目录的父目录
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
$sf = fopen("$DOCUMENT_ROOT\\..\\orders\\orders,txt","w");
第一个参数表示在目录orders下的orders.txt文件,第二个参数指定了将对文件进行的操作

25.fopen("","");——读文件
fwrite("","")——写文件
fclose($fp)——关闭文件,如果文件成功地关闭,函数将返回一个true值。反之,该函数将返回false

26.fgets(),fgetss()和getcsv()
$order = fgets($fp,999)——表示从文件中每次读取一行内容,直到文件结束或者是从文件中读取了998B。可以读取的最大长度为指定的长度减去1B
fgetss()函数和fgets()非常相似,但是它可以过滤字符串中包含PHP和HTML标记
fgetcsv()函数是fgets()的另一个变体
$order = fgetcsv($fp,100,"\t");——从文件中读取一行,并且在"\t"的地方将文件内容分行。该函数将返回一个数组

27.读取整个文件:readfile(),fpassthru()和file()
a.readfile("$DOCUMENT_ROOT/../orders/orders.txt");
将打开这个文件,并且将文件内容输出到浏览器中。然后再关闭这个文件

b.$fp = fopem("$DOCUMENT_ROOT/../orders/orders.txt","rb");
fpassthru($fp);
如果操作成功,fpassthru()函数将返回true,否则返回false

c.$filearray = file("$DOCUMENT_ROOT/../orders/orders.txt");
这行代码可以将整个文件读入到一个名为$filearray的数组中。文件的每一行都将作为一个元素保存到这个数组中

d.在php4.30中,还可以使用file_get_contents()函数。这个函数与readfile()相同,但是该函数将以字符串的形式返回文件内容,而不是将
文件内容回显到浏览器中,这个新函数的优点在于,它是二进制安全的,这一点不同于file

28.读取一个字符:fgetc()
while(!feof($fp)){
?$char = fgetc($fp);
?if(!feof($fp))
??echo ($char == "\n"?'<br/>':$char);
}

29.读取文件任意长度:fread()
string fread(resource fp, int length);

30.查看文件是否存在:file_exists()
if(file_exists("$DOCUMENT_ROOT/../orders/orders.txt")){
?echo ....
}else{
?echo......
}

31.确定文件大小:filesize()
filesize("$DOCUMENT_ROOT/../orders/orders.txt");

32.删除一个文件:unlink()——php中没有名为delete的函数
unlink("$DOCUMENT_ROOT/../orders/orders.txt");
如果无法删除这个文件,该函数将返回false

33.在文件中定位:rewind(),fseek(),ftell()
rewind()——函数可以将文件指针复位到文件的开始
fseek(resource fp,int offset,int whence)——将文件指针fp从whence位置移动到offset位置
ftell()——以字节为单位报告文件指针当前在文件中的位置

34.文件锁定:
flock(resource fp,int operation)——operation参数的可能值如下:
LOCK_SH(以前为1)——读操作锁定,这意味着文件可以共享,其他人可以读该文件
LOCK_EX(以前为2)——写操作锁定,这是互斥的。该文件不能被共享
LOCK_UN(以前为3)——释放已有的锁定
LOCK_NB(以前为4)——防止在请求加锁时发生阻塞

************************************************php文件end*****************************************************

?

?

************************************************php数组start*****************************************************

?数组的两种类型:

1.索引数组:以数字作为键名的数组

2.关联数组:以数字,字符串或数字和字符串混合成为键名的数组

其中数组又可分一维数组,二维数组,和多维数组

?

删除数组元素用unset()——直接销毁

?

35.php的数组:
$products = array('Tires','Cil','Spark Plugs');——创建一个数组
$numbers = range(1,10);——range函数自动创建一个从1到10的数字数组,range()函数具有一个可选的第三个参数,这个参数允许设定值
之间的步幅? $numbers = range(1,10,2);
range()函数也可以对字符进行操作: $letters = range('a','z');
注意:可以使用运算符“=”简单地将数组复制到另一个数组

?

36.初始化相关数组:
$prices = array('Tires'=>100, 'Oil'=>10, 'Spark Plugs'=>4);产品名称做为关键字,以价格作为值的相关数组,可以使用变量名称关键字来访问数组
例如:$prices['Tires']等
<?php
?echo '—————用for循环取出—————<br/>';
?if ($privace!=NULL){
??foreach ($privace as $arrkey=>$value) {
???echo $arrkey.'='.$value.'<br/>';
??}
?}
?
?echo '—————用关键字独个取出——————<br/>';
?if($privace!=null){
??echo 'name='.$privace['name'].'<br/>';
??echo 'age='.$privace['age'].'<br/>';
??echo 'nubmer='.$privace['nubmer'].'<br/>';
?}
?
?echo '—————用each()结构取出———————<br/>';
?if($privace!=NULL){
??reset($privace);//将当前元素重新设到数组开始处
??while ($element = each($privace)){
???echo $element['key'].'-'.$element['value'].'<br/>';
??}
?}
?
?echo '—————用list()结构取出————<br/>';
?if($privace!=null){
??reset($privace);//将当前元素重新设到数组开始处
??while (list($key,$value) =? each($privace)){
???echo $key.'====='.$value.'<br/>';
??}
?}
?>

37.php数组与java数组的比较。
java数组一旦被创建,其长度不可改变。而php数组长度却可以改变,在数组中加入第一个元素时数组被创建,后续的可以再加入元素。如下:
$prices['Tires']=100;
$prices['Oil'] = 10;
$prices['Spark Plugs'] = 4;

38.数组的排序sort(),asort(),ksort()——按升序排序的
其中sort适用于数字索引的一般数组的排序,assort()与ksort()适用于相关数组的排序,其中assort()是按值排序,而ksort是按照关键字排序

39.数组的反向排序
反向排序是按降序进行排序的,与上面对应的是rsort(),arsort(),krsort()

40.对数组进行重新的排序:
shuffle()——将数组各元素进行随机排序
array_reverse()——将原来的数组进行反向排序(函数将返回一个原来数组修改后的副本,也就是说原来的数组并没有改变,我们可以对它进行覆盖)

41.统计数组元素个数:count(),sizeof(),array_count_values()
其中count()与sizeof()有相同的用途,都可以返回数组元素的个数
array_count_values($array)函数传入一个数组,将返回一个与数组元素顺序一致的,统计好个数的数组


42.数组中的其他方法:
current($array)——将返回第一个元素
调用next()和each()将使指针前移一个元素。each会在指针前移一个位置之前返回当前元素,next则将指针前移,然后再返回新的当前元素
reset()和end()可以分别返回数组的第一个元素和最后一个元素
要反向遍历一个数组,可以使用end()和prev()函数。prev()函数和next()函数相反,它是将当前指针往回移动一个位置后再返回新的当前元素
例如,如下所示的代码将反向显示一个数组的内容
$value = end($array);
while($value){
?echo "$value<br/>";
?$value = prev($array);
}

43.对数组的每个元素应用任何函数:array_walk($array,'myFuntion')这里$array是传入的数组,myFun是定义的函数,还可以传入第三个参数。
第三个参数可以再自定义的函数接受。——每个数组的元素都会制定这个函数

44.将数组转换成标量变量:extract():
$array = array('key1'=>'value1','key2'=>'value2','key3'=>'value3');
extract($array);
echo "$key1 $key2 $key3";
这段代码输出如下所示:
value1 value2 value3

?

数组判断函数:

1.确定数组元素是否在数组中:

in_array()——默认返回false

?

2.确定键名是否在数组中:

array_key_exits()

?

数组的合并与拆分:

1、数组的合并:

array_merge()函数的功能是把两个或多个数组合并为一个数组。如果键名有重复,后面的键名对应的值会覆盖前面的值。如果是数字索引的数组,则键名会以连续方式重新组成索引

?

2.数组的拆分:

array_chunk函数可以将一个数组分割成多个数组

?

数组的求和:

可以使用array_sum()函数求数组元素之和

?

对调数组中键名和值:

可以用array_flip()函数对调数组的键名和值。

************************************************php数组end*****************************************************

?

?

?************************************************字符串start*****************************************************
45.php邮件发送函数 bool mail(String to,String subject,String message)

46.字符串的整理:chop(),ltrim()和trim()
trin()——将除去整个字符串前后的空格
ltrim()——只从字符串的饿开始处(左边)除去空格
rtime()——只从字符串的结束处(右边)除去空格

47.echo,printf()和sprintf()
三者都可以实现输出功能,echo的效率要比较高。使用printf()和sprintf()还可以实现一些更复杂的格式。他们的工作方式基本相同,只是
printf()函数是将一个格式化的字符串输出到浏览器中,而sprintf()函数是返回一个个刷了的字符串
printf ("Total amount of arder is %s.", $total);——格式化字符串中的%s是转换的说明。它的意思是用一个字符串来代替。即后面的$total
,如果有多个,则相对应与后面的参数替换。

printf()函数的优点在于,可以使用更有用的转换说明来指定$total为一个浮点数,它的小数点后面应该有两位小数:
printf ("Total amount of arder is %.2f", $total);

对于4.0.6版本来说,可以使用带序号的参数方式,这就意味着参数的顺序并不一定要与转换说明中的顺序相同。例如:
printf("Total amount of arder is %2\$.2f (with shipping %1\$.2f)", $total_shipping,$total");
只要直接在"%"符号后添加参数的位置,并且以$符号为结束.这样就不用按特定的参数

48.格式化字符串一遍存储:addslashes()和stripslashes()
在将任何字符串写到数据库之前,应该使用addslashes()将他们格式化(如双引号,反斜杠等等):$name = addslashes($name)
在输出的时候要调用stripslashes()不然那些转义好的字符将会被打印出来

49.使用函数exploade(),implode(),join()
使用exploade()能按某个字符对字符串进行拆分,返回一个数组(注意对大写无效,要先转换)。如:
$name = "yuange19@sina.com";
$array = exploade('@',$name);——exploade()函数将字符串拆分成yuange19与sina.com两个部分

implode()与join()来实现与函数explode()相反的效果,能将数组按逗号分开。返回字符串

50.使用strtok()函数:
与函数explode()每次都将一个字符串全部分割成若干小块不同。strtok()函数每次只从字符串中取出一些片段。

51.使用substr()函数:
substr()函数运行我们访问一个字符串给定起点和终点的子字符串,如:
string substr(string string, int start, int length);

52.字符串的比较:strcmp(),strcasecmp(),strnatcmp()
a.使用"=="比较两个字符串是否相等
b.strcmp(string str1, string str2)如果两个字符串相等就返回0,如果按字典顺序str1在str2后面就返回一个正数,如果小于就返回负数
c.strcasecmp()除了不区分大小写,其他的与strcmp()一样
strcasecmp()与strcmp()是按照‘自然顺序’比较字符串。所谓自然顺序就是人们习惯的顺序进行排序。而strnatcmp()则相反

53.使用strlen()函数测试字符串的长度,返该长度

54.在字符串中查找字符串:strstr(),strchr(),strrchr(),stristr()
strstr(string str , string char) 如果str包含char则返回str,否则返回false

55.查找字符串的位置:strpos(),strrpos()
strpos()和strrpos()的操作和strstr()类似,但它不是返回一个子字符串,而返回子字符串在字符串中的位置
strpos()返回第一个出现的位置。而strrpos()返回最后一次出现子字符串的字符串位置

56.替换子字符串:str_replace(),substr_replace()
str_replace()——用新字符串代替旧字符串
str_replace(string str, str new, str old);
substr_replace()——用新字符串代替,字符串中的指定位置
substr_replace(string str,str new, int start, int length);

?

字符串换行拼接:使用一个句号等号".="来对字符串进行换行拼接

?

字符串其他的一些函数:

nl2br()函数:该函数能将字符串中的"\n"转换为HTML中的"<br/>"然后显示出来

wordwrap()函数:该函数的功能是从某列字符进行强制换行

?

修改字母大小写函数:

1.strtolower():——将字符串中的所有字符转换为小写

2.strtoupper():——将字符串中的所有字符串转换为大写

3.ucwords():——将字符串中所有首字符转换为大写

?

strlen():函数的功能是计算字符串的长度并返回该字符串的长度数,该返回的数据类型为整形

?

计算字符串的数目:使用php提供的substr_count()函数,可以很容易确认一个指定的子字符串在所提供的字符串中有多少个

?

str_repeat():——该函数实现对字符串的复制

?

字符串的翻转(逆向排序相似)——


************************************************字符串end*****************************************************

?

?


**********************************************正则表达式start**************************************************
57.[]中的内容都是一个字符类,一个被匹配字符所属的字符集合

58."*"表示这个模式可以被重复0次或更多次,符号"+"表示这个模式可以被重复1次或更多次

59.子表达式:将一个表达式分隔为几个表达式是非常有用的,例如,可以表示”至少这些字符串中的一个需要精确匹配,例如:
(vary)*large
可以匹配"large","vary large","vary vary large"等等

60.字表达式计数:
(very){1,3}
表示匹配"very","very very"和"very very very"

61.定位到字符串的开始或末尾
脱字符号(^)用于则这表达式的开始,表示子字符串必须出现在被搜索字符串的开始处
字符"$"用于正则表达式的末尾,表示子字符串必须出现在字符串的末尾

62.分支:可以使用正则表达式中的一条竖线历来表示一个选择。例如如果要匹配com,edu,net,就可以使用如下所示的表达式
com|edu|net

63.匹配特殊字符——在前面加""(表示转义字符)
,.?{就必须在他们前面加一个反斜杠\},如果要匹配一个反斜杠,则必须用两个反斜杠(\\)来表示
\\\$匹配$

64.用正则表达式查找字符串:
if(!eregi('^[a-zA-Z0-9_\-\.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$','$string')){
?echo '无匹配';
}
函数eregi()除了不区分大小写外,其他功能与ereg()一样

65.用zhengze表达式替换字符串:ereg_replace()和eregi_replace()
函数eregi_replace()除了不区分大小写外,其他与ereg_replace()相同

66.使用正则表达式分隔字符串:split()

67.比较字符串函数和正则表达式函数:一般而言,对于同样的功能,正则表达式运行效率要低于字符串函数。对于可以通过单个正则表达式执行的
任务来说,如果使用多个字符串函数则是不对的
************************************************正则表达式end**************************************************

?

?

?*********************************************代码重用与函数start***********************************************
68.require()和include():
使用require和include几乎都是等价的,二者的区别在于当调用失败的时候,require()将给出一个致命的错误,而include()只是给出一个警告

69.使用require_once()和include_once()
它们的用途是确保一个被包含的文件只能被包含一次。

70.使用auto_prepend_file和auto_append_file
如果希望包含应用到每个页面中,在配置文件php.ini中有两个选项auto_prepend_file和auto_append_file。通过这两个选项用include语句浩瀚文件
对于windows,其设置如下所示:
auto_prepend_file = "c:/Apache/include/header,inc";
auto_append_file = "c:Apache/include/footer.inc";

71.自定义函数以function开头+函数名+(参数),函数命名具有如下几个限制:
函数名称不能和已有的函数重名(主要是php自带的函数)
函数名称只能包含字母,数字和下划线
函数名称不能以数字开始
函数名称是无大小写区别的

72.在函数内部统计,被调用时候传入参数的个数:
func_num_args()函数将返回传入的参数个数。
func_get_args()函数将返回参数的数组
func_get_arg()函数一次获得一个参数,该函数需要以希望访问的参数个数作为参数(参数从0开始)

function var_args(){
?echo 'number of parmeters:';
?echo func_num_args();
?
?echo '<br/>';
?
?$args = func_get_args();
?foreach($args as $arg){
??echo $arg.'<br/>';
?}
}

73.php变量的作用域:
a.在函数内部声明的变量作用域是从声明它们的那条语句开始到函数末尾。这叫做函数作用域。这些变量称为局部变量
b.在函数外部声明的变量作用域是从声明它们的那条语句开始到文件末尾,而不是函数内部。这叫做全局作用域。这些变量称为全局变量
c.特殊的超级全局变量在函数内部和外部都是可见的
d.使用require()和include()并不影响作用域。如果这两个语句用于函数内部,函数作用域适用,如果它不在函数内部,全局作用域适用
e.关键字"global"可以用来手动指定一个在函数中定义或使用的变量具有全局作用域
f.通过unset($var)可以手动删除变量

74.参数的引用传递和值传递
function increment($value, $amount =1){
?$value = $value+$amount;
}

$value = 10;
increment($value);
echo $value
这里打印的结果还是10,因为函数内外可以声明同名的变量,在函数increment()中的$value重新创建的变量名,它只在函数内部有效

现在我们做如下的修改:
?function increment($value, $amount = 1){
???
??? global $value;
??? $value = $value + $amount;
?}
?
?$value = 10;
?increment($value);
?echo $value;
这段代码将函数内的$value声明为全局变量,它将重新声明一个$value的全局变量,打印的结果是11

上面的两个实例是指传递,可以通过在函数定义参数名前面加一个地址符(&)来指定参数的引用传递。在函数调用处不用修改
function increment(&$value, $amount =1){
?$value = $value+$amount;
}

$value = 10;
increment($value);
echo $value
这个打印的结果是11,函数里面的$value不是重新创建的一个变量,而是引用外面的全局变量$value

?

在函数定义要传递的参数,默认参数必须放在非默认参数的右侧,否则可能会得到和预期不同的执行结果

?

?

变量函数:

$myFuntion = "sun";

$myFuntion($length,$width);

在以上两行代码中,php会查找调用sun()函数,这种方式就是变量函数


**********************************************代码重用与函数end************************************************

?

?

************************************************php面向对象start************************************************
75.构造函数:构造函数的声明与其他操作的声明一样,只是其名称必须是_construct().这是PHP5中的变化。在以前的版本中,构造函数
的名称必须与类名相同。为了向下兼容,如果一个类中没有名为_construct()的方法,php将搜索一个与类名称相同的方法。如今php5已经支持
函数重载,这就意味着可以提供多个具有相同名称以及不同数量或类型的函数

?

##可以通过parent::operation()调用父类的方法。在PHP中通过继承来实现多态,既继承父类,重写了父类的方法。并不影响父类的方法。我们还是可以调用父类的方法。

?

##还可以通过_call()重载方法。使用_call()必须带两个参数。第一个包含了被调用的方法名称,而第二个参数包含了传递给该方法的参数数组。

public function _call($method,$p){

? if($method == 'display'){

????? $this->displayObject($p[0]);

? }else if(is_array($p[0]){

????? $this->displayArray($p[0]);

?}else{

???? $this->displayScalar($p[0]);

?}

}

76析构函数:析构函数允许在销毁一个类之前执行一些操作或完成一些功能,这些操作或功能通常在所有对该类的引用都被重置或超出作用域时自动发生
。一个类的析构函数名称必须是_destruct().析构函数不能带有任何参数

77.类的实例化:可以使用关键字“new”来创建一个对象:$a = new classname('First')

78.使用类的属性
calss classname{

?var $name;
?function operation($param){
??$this->name = $param;
?}
}

79.声明变量: var $a? 如果用修饰符的话var则被修饰符替换 public $a

80.php只允许单继承,可以实现多个接口

81.使用Per—Class常量:这个常量可以在不需要初始化该类的情况下使用,如下所示:
<?php
?class Math{
??const pi = 3.14159;
?}
?
?echo 'Math::pi = '.Math::pi."\n";
?>
可以通过使用::操作符指定常量所属的类来访问Per-Class常量

82.static与const:
static修饰的是变量,const修饰的是常量(程序从开始到结束,数值不变的量).如果一个用static修饰的方法,可以同过类名+“::”直接调用,而不用进行实例化,静态方法不受任何对象的限制

83.在一个静态方法中,不能使用this关键字,因为可能会没有可以引用的对象实例

84.克隆对象: $c = clone $b,该关键字允许复制一个已有的对象

85.使用_autoload()方法:
_autoload()方法的主要用途是尝试包括或要求任何用来初始化所需类的文件

86.——toString()方法能将类转换成字符串:
class Printable{
?var $testone;
?var $testtwo;
?
?public function_toString(){
??
??return (var_export($this,TRUE));
?}
}
var_export()函数打印出了类中的所有属性值

87.对象的句柄:用于区分不同对象,创建对象后,该对象会获取一块存储空间,存储空间的地址既为对象的标识,也就是对象的句柄

88.接口不能被实例化,所以接口不存在构造方法和析构方法

?

************************************************php面向对象end**************************************************

?

热点排行