我的php學(xué)習(xí)筆記(畢業(yè)設(shè)計(jì))
更新時(shí)間:2012年02月21日 21:35:10 作者:
不單是為了做畢業(yè)設(shè)計(jì),其實(shí)更多的是想學(xué)會(huì)它,能弄弄網(wǎng)站什么的,只要能做好,我覺(jué)得就是可以去學(xué),可以去嘗試的
php語(yǔ)法簡(jiǎn)單,應(yīng)用也非常好,而且類(lèi)庫(kù)強(qiáng)大,確實(shí)能寫(xiě)出很強(qiáng)大的服務(wù)器端。對(duì)于我這種只需要小功能服務(wù)器的人來(lái)說(shuō),再好不過(guò)了。
單純的說(shuō)學(xué)習(xí)php,我覺(jué)得還是看手冊(cè)的好?;藥滋鞎r(shí)間看了看語(yǔ)法,因?yàn)橛芯幊袒A(chǔ),所以現(xiàn)在看起來(lái)就比較快了。剛用php寫(xiě)完一個(gè)簡(jiǎn)單的服務(wù)器,當(dāng)然是有目的,準(zhǔn)備用來(lái)支持一個(gè)訂票系統(tǒng)的客戶端。下面是我學(xué)習(xí)過(guò)程的筆記。以后也好有個(gè)回顧。
當(dāng)不存在某個(gè)類(lèi)的對(duì)象時(shí),可以通過(guò)作用域分辨符(::)來(lái)調(diào)用某個(gè)類(lèi)中的方法;
訪問(wèn)基類(lèi)中的方法時(shí)可以寫(xiě)成 parent::method();
serialize() 返回一個(gè)字符串,包含著可以?xún)?chǔ)存于 PHP 的任何值的字節(jié)流表示。
unserialize() 可以用此字符串來(lái)重建原始的變量值。
用序列化來(lái)保存對(duì)象可以保存對(duì)象中的所有變量。對(duì)象中的函數(shù)不會(huì)被保存,只有類(lèi)的名稱(chēng)。
序列化與反序列化同一個(gè)對(duì)象時(shí),可以采用包含同一對(duì)象的定義文件方法來(lái)實(shí)現(xiàn)。
這是因?yàn)椤皀ew”默認(rèn)并不返回引用,而返回一個(gè)拷貝。
php5
類(lèi)與對(duì)象的特點(diǎn):
visibility:可見(jiàn)性
屬性的訪問(wèn)限度:public:任何地方都可以訪問(wèn)到此屬性,
protect派生類(lèi)或者父類(lèi)可以訪問(wèn)到這個(gè)屬性,或者任何定義了這個(gè)屬性的類(lèi)內(nèi)的某個(gè)項(xiàng))
private:只有類(lèi)內(nèi)部才能訪問(wèn)
A member declared as static can not be accessed with
an instantiated class object (though a static method can).
Static members and methods cannot be re-defined in subclasses.
?。ㄈ绻粋€(gè)成員被定義為靜態(tài)的,那么該成員不能被實(shí)例化對(duì)象訪問(wèn),
靜態(tài)成員不能在子類(lèi)中被重新定義)。
靜態(tài)定義必須在訪問(wèn)屬性之后,如:protect static
靜態(tài)方法可以不實(shí)例化調(diào)用,所以使用靜態(tài)方法時(shí)不能帶有$this參數(shù)。
靜態(tài)成員不能用->來(lái)訪問(wèn)。
constant:常量關(guān)鍵字, const 用于定義 不可改變的常量,定義時(shí)不需要使用$符號(hào)。
定義方法一般為:const aconstant = 'constant';
php中g(shù)loabl定義的變量是在整個(gè)頁(yè)面中使用的,包括require包含的頁(yè)面和include包含的頁(yè)面。
抽象類(lèi):
抽象類(lèi)不能實(shí)例化,任何帶有抽象方法的類(lèi)必須定義為抽象類(lèi)。
繼承抽象類(lèi)的話,任何在抽象類(lèi)中的抽象方法都必須重寫(xiě)實(shí)現(xiàn)。這些方法的訪問(wèn)限度只能
和抽象父類(lèi)的方法的訪問(wèn)限度相同或更低。
抽象類(lèi)和抽象方法都使用 abstract作為關(guān)鍵字。
對(duì)象接口(object interface)
對(duì)象接口允許你規(guī)定哪些方法必須實(shí)現(xiàn),而不是讓你定義哪些方法怎么被捕捉。
對(duì)象接口使用 interface 關(guān)鍵字來(lái)定義。它是一個(gè)標(biāo)準(zhǔn)的類(lèi),但是它的任何方法都沒(méi)有被實(shí)現(xiàn)。
任何在接口對(duì)象中的方法都必須是公有的,這是接口對(duì)象必須遵循的。
實(shí)現(xiàn)一個(gè)接口必須使用implements標(biāo)示,所以接口方法實(shí)現(xiàn)必須在一個(gè)類(lèi)里面。一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)接口。
重載:
迭代器:
迭代器可以訪問(wèn)類(lèi)里面所有的公有對(duì)象成員。
實(shí)現(xiàn)PHP5里面的迭代器接口,這樣可以允許你定義,對(duì)象怎么被迭代訪問(wèn)。
設(shè)計(jì)模式:
設(shè)計(jì)模式提供了一個(gè)良好的框架來(lái)實(shí)現(xiàn)一些功能組織。
工廠模式:在運(yùn)行過(guò)程中實(shí)例化一個(gè)要求的對(duì)象。
單利模式:最明顯的一個(gè)例子就是:數(shù)據(jù)庫(kù)連接對(duì)象。下面是一個(gè)最好的單例模式范例:
Singleton Function
<?php
class Example
{
// Hold an instance of the class
private static $instance;
// A private constructor; prevents direct creation of object
private function __construct()
{
echo 'I am constructed';
}
// The singleton method
public static function singleton()
{
if (!isset(self::$instance)) {
$c = __CLASS__;
self::$instance = new $c;
}
return self::$instance;
}
// Example method
public function bark()
{
echo 'Woof!';
}
// Prevent users to clone the instance
public function __clone()
{
trigger_error('Clone is not allowed.', E_USER_ERROR);
}
}
你還可以實(shí)現(xiàn)php5里面的iteratoraggregate接口對(duì)象來(lái)定義自己的迭代方法。
魔術(shù)函數(shù):
The function names __construct, __destruct (see Constructors and Destructors),
__call, __get, __set, __isset, __unset (see Overloading), __sleep, __wakeup,
__toString, __clone and __autoload are magical in PHP classes.
這些函數(shù)在存在于每一個(gè)php類(lèi)中。你不要隨意使用__來(lái)定義函數(shù),除非你真的想這個(gè)函數(shù)具有魔術(shù)功能。
__tostring()函數(shù),這個(gè)函數(shù)將決定一個(gè)對(duì)象轉(zhuǎn)換為字符的時(shí)候?qū)l(fā)生的事。
final關(guān)鍵字:
final關(guān)鍵字用來(lái)阻止應(yīng)用final關(guān)鍵字聲明的類(lèi)或者方法被繼承,被覆蓋。
參數(shù)類(lèi)型強(qiáng)制:
可以在參數(shù)前面加上類(lèi)名類(lèi)控制傳入的參數(shù)類(lèi)型。
require() 和 include() 除了怎樣處理失敗之外在各方面都完全一樣。
include() 產(chǎn)生一個(gè)警告而 require() 則導(dǎo)致一個(gè)致命錯(cuò)誤。
換句話說(shuō),如果想在丟失文件時(shí)停止處理頁(yè)面,那就別猶豫了,用 require() 吧。
require_once() 語(yǔ)句在腳本執(zhí)行期間包含并運(yùn)行指定文件。
此行為和 require() 語(yǔ)句類(lèi)似,
唯一區(qū)別是如果該文件中的代碼已經(jīng)被包含了,
則不會(huì)再次包含。有關(guān)此語(yǔ)句怎樣工作參見(jiàn) require() 的文檔。
PHP 有一個(gè)類(lèi)型運(yùn)算符:instanceof。instanceof 用來(lái)測(cè)定一個(gè)給定的對(duì)象是否來(lái)自指定的對(duì)象類(lèi)。
代碼范例:
<?php
class A { }
class B { }
$thing = new A;
if ($thing instanceof A) {
echo 'A';
}
if ($thing instanceof B) {
echo 'B';
}
?>
的 PHP 代碼段結(jié)束標(biāo)記可以不要,有些情況下當(dāng)使用輸出緩沖和
include() 或者 require() 時(shí)省略掉會(huì)更好些。
include() 就不是這樣,腳本會(huì)繼續(xù)運(yùn)行。同時(shí)也要確認(rèn)設(shè)置了合適的include_path。
__CLASS__ :指的是當(dāng)前類(lèi)。
異常處理,根據(jù)需要擴(kuò)展異常處理類(lèi)exception
require()語(yǔ)句包含并運(yùn)行指定文件;
單純的說(shuō)學(xué)習(xí)php,我覺(jué)得還是看手冊(cè)的好?;藥滋鞎r(shí)間看了看語(yǔ)法,因?yàn)橛芯幊袒A(chǔ),所以現(xiàn)在看起來(lái)就比較快了。剛用php寫(xiě)完一個(gè)簡(jiǎn)單的服務(wù)器,當(dāng)然是有目的,準(zhǔn)備用來(lái)支持一個(gè)訂票系統(tǒng)的客戶端。下面是我學(xué)習(xí)過(guò)程的筆記。以后也好有個(gè)回顧。
當(dāng)不存在某個(gè)類(lèi)的對(duì)象時(shí),可以通過(guò)作用域分辨符(::)來(lái)調(diào)用某個(gè)類(lèi)中的方法;
訪問(wèn)基類(lèi)中的方法時(shí)可以寫(xiě)成 parent::method();
serialize() 返回一個(gè)字符串,包含著可以?xún)?chǔ)存于 PHP 的任何值的字節(jié)流表示。
unserialize() 可以用此字符串來(lái)重建原始的變量值。
用序列化來(lái)保存對(duì)象可以保存對(duì)象中的所有變量。對(duì)象中的函數(shù)不會(huì)被保存,只有類(lèi)的名稱(chēng)。
序列化與反序列化同一個(gè)對(duì)象時(shí),可以采用包含同一對(duì)象的定義文件方法來(lái)實(shí)現(xiàn)。
這是因?yàn)椤皀ew”默認(rèn)并不返回引用,而返回一個(gè)拷貝。
php5
類(lèi)與對(duì)象的特點(diǎn):
visibility:可見(jiàn)性
屬性的訪問(wèn)限度:public:任何地方都可以訪問(wèn)到此屬性,
protect派生類(lèi)或者父類(lèi)可以訪問(wèn)到這個(gè)屬性,或者任何定義了這個(gè)屬性的類(lèi)內(nèi)的某個(gè)項(xiàng))
private:只有類(lèi)內(nèi)部才能訪問(wèn)
A member declared as static can not be accessed with
an instantiated class object (though a static method can).
Static members and methods cannot be re-defined in subclasses.
?。ㄈ绻粋€(gè)成員被定義為靜態(tài)的,那么該成員不能被實(shí)例化對(duì)象訪問(wèn),
靜態(tài)成員不能在子類(lèi)中被重新定義)。
靜態(tài)定義必須在訪問(wèn)屬性之后,如:protect static
靜態(tài)方法可以不實(shí)例化調(diào)用,所以使用靜態(tài)方法時(shí)不能帶有$this參數(shù)。
靜態(tài)成員不能用->來(lái)訪問(wèn)。
constant:常量關(guān)鍵字, const 用于定義 不可改變的常量,定義時(shí)不需要使用$符號(hào)。
定義方法一般為:const aconstant = 'constant';
php中g(shù)loabl定義的變量是在整個(gè)頁(yè)面中使用的,包括require包含的頁(yè)面和include包含的頁(yè)面。
抽象類(lèi):
抽象類(lèi)不能實(shí)例化,任何帶有抽象方法的類(lèi)必須定義為抽象類(lèi)。
繼承抽象類(lèi)的話,任何在抽象類(lèi)中的抽象方法都必須重寫(xiě)實(shí)現(xiàn)。這些方法的訪問(wèn)限度只能
和抽象父類(lèi)的方法的訪問(wèn)限度相同或更低。
抽象類(lèi)和抽象方法都使用 abstract作為關(guān)鍵字。
對(duì)象接口(object interface)
對(duì)象接口允許你規(guī)定哪些方法必須實(shí)現(xiàn),而不是讓你定義哪些方法怎么被捕捉。
對(duì)象接口使用 interface 關(guān)鍵字來(lái)定義。它是一個(gè)標(biāo)準(zhǔn)的類(lèi),但是它的任何方法都沒(méi)有被實(shí)現(xiàn)。
任何在接口對(duì)象中的方法都必須是公有的,這是接口對(duì)象必須遵循的。
實(shí)現(xiàn)一個(gè)接口必須使用implements標(biāo)示,所以接口方法實(shí)現(xiàn)必須在一個(gè)類(lèi)里面。一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)接口。
重載:
迭代器:
迭代器可以訪問(wèn)類(lèi)里面所有的公有對(duì)象成員。
實(shí)現(xiàn)PHP5里面的迭代器接口,這樣可以允許你定義,對(duì)象怎么被迭代訪問(wèn)。
設(shè)計(jì)模式:
設(shè)計(jì)模式提供了一個(gè)良好的框架來(lái)實(shí)現(xiàn)一些功能組織。
工廠模式:在運(yùn)行過(guò)程中實(shí)例化一個(gè)要求的對(duì)象。
單利模式:最明顯的一個(gè)例子就是:數(shù)據(jù)庫(kù)連接對(duì)象。下面是一個(gè)最好的單例模式范例:
Singleton Function
復(fù)制代碼 代碼如下:
<?php
class Example
{
// Hold an instance of the class
private static $instance;
// A private constructor; prevents direct creation of object
private function __construct()
{
echo 'I am constructed';
}
// The singleton method
public static function singleton()
{
if (!isset(self::$instance)) {
$c = __CLASS__;
self::$instance = new $c;
}
return self::$instance;
}
// Example method
public function bark()
{
echo 'Woof!';
}
// Prevent users to clone the instance
public function __clone()
{
trigger_error('Clone is not allowed.', E_USER_ERROR);
}
}
你還可以實(shí)現(xiàn)php5里面的iteratoraggregate接口對(duì)象來(lái)定義自己的迭代方法。
魔術(shù)函數(shù):
The function names __construct, __destruct (see Constructors and Destructors),
__call, __get, __set, __isset, __unset (see Overloading), __sleep, __wakeup,
__toString, __clone and __autoload are magical in PHP classes.
這些函數(shù)在存在于每一個(gè)php類(lèi)中。你不要隨意使用__來(lái)定義函數(shù),除非你真的想這個(gè)函數(shù)具有魔術(shù)功能。
__tostring()函數(shù),這個(gè)函數(shù)將決定一個(gè)對(duì)象轉(zhuǎn)換為字符的時(shí)候?qū)l(fā)生的事。
final關(guān)鍵字:
final關(guān)鍵字用來(lái)阻止應(yīng)用final關(guān)鍵字聲明的類(lèi)或者方法被繼承,被覆蓋。
參數(shù)類(lèi)型強(qiáng)制:
可以在參數(shù)前面加上類(lèi)名類(lèi)控制傳入的參數(shù)類(lèi)型。
require() 和 include() 除了怎樣處理失敗之外在各方面都完全一樣。
include() 產(chǎn)生一個(gè)警告而 require() 則導(dǎo)致一個(gè)致命錯(cuò)誤。
換句話說(shuō),如果想在丟失文件時(shí)停止處理頁(yè)面,那就別猶豫了,用 require() 吧。
require_once() 語(yǔ)句在腳本執(zhí)行期間包含并運(yùn)行指定文件。
此行為和 require() 語(yǔ)句類(lèi)似,
唯一區(qū)別是如果該文件中的代碼已經(jīng)被包含了,
則不會(huì)再次包含。有關(guān)此語(yǔ)句怎樣工作參見(jiàn) require() 的文檔。
PHP 有一個(gè)類(lèi)型運(yùn)算符:instanceof。instanceof 用來(lái)測(cè)定一個(gè)給定的對(duì)象是否來(lái)自指定的對(duì)象類(lèi)。
代碼范例:
復(fù)制代碼 代碼如下:
<?php
class A { }
class B { }
$thing = new A;
if ($thing instanceof A) {
echo 'A';
}
if ($thing instanceof B) {
echo 'B';
}
?>
的 PHP 代碼段結(jié)束標(biāo)記可以不要,有些情況下當(dāng)使用輸出緩沖和
include() 或者 require() 時(shí)省略掉會(huì)更好些。
include() 就不是這樣,腳本會(huì)繼續(xù)運(yùn)行。同時(shí)也要確認(rèn)設(shè)置了合適的include_path。
__CLASS__ :指的是當(dāng)前類(lèi)。
異常處理,根據(jù)需要擴(kuò)展異常處理類(lèi)exception
require()語(yǔ)句包含并運(yùn)行指定文件;
您可能感興趣的文章:
- 網(wǎng)上考試設(shè)計(jì)思路是怎樣的?
- php網(wǎng)上商城購(gòu)物車(chē)設(shè)計(jì)代碼分享
- php 網(wǎng)上商城促銷(xiāo)設(shè)計(jì)實(shí)例代碼
- ASP.NET網(wǎng)站聊天室的設(shè)計(jì)與實(shí)現(xiàn)(第3節(jié))
- 管理員登錄設(shè)計(jì)(第7節(jié))
- JavaWeb搭建網(wǎng)上圖書(shū)商城畢業(yè)設(shè)計(jì)
- C#影院售票系統(tǒng)畢業(yè)設(shè)計(jì)(1)
- C#影院售票系統(tǒng)畢業(yè)設(shè)計(jì)(2)
- C#影院售票系統(tǒng)畢業(yè)設(shè)計(jì)(3)
- C#影院售票系統(tǒng)畢業(yè)設(shè)計(jì)(4)
相關(guān)文章
PHP高效獲取遠(yuǎn)程圖片尺寸和大小的實(shí)現(xiàn)方法
這篇文章主要介紹了 PHP高效獲取遠(yuǎn)程圖片尺寸和大小的實(shí)現(xiàn)方法的相關(guān)資料,希望通過(guò)本文大家能夠?qū)崿F(xiàn)這樣的功能,需要的朋友可以參考下2017-10-10PHP實(shí)現(xiàn)web socket長(zhǎng)鏈接流程詳解
這篇文章主要介紹了PHP實(shí)現(xiàn)web socket長(zhǎng)鏈接流程,了解內(nèi)部原理是為了幫助我們做擴(kuò)展,同時(shí)也是驗(yàn)證了一個(gè)人的學(xué)習(xí)能力,如果你想讓自己的職業(yè)道路更上一層樓,這些底層的東西你是必須要會(huì)的2023-03-03快速解決PHP調(diào)用Word組件DCOM權(quán)限的問(wèn)題
下面小編就為大家分享一篇快速解決PHP調(diào)用Word組件DCOM權(quán)限的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12ezSQL PHP數(shù)據(jù)庫(kù)操作類(lèi)庫(kù)
WordPress 使用的數(shù)據(jù)庫(kù)操作類(lèi)就是它 -- ezSQL 我用了好多年了,我特別喜歡它的幾個(gè)類(lèi)方法,可以有效提高代碼簡(jiǎn)潔度。2010-05-05PHP高并發(fā)高負(fù)載下的3種實(shí)戰(zhàn)場(chǎng)景解決方法示例
這篇文章主要為大家介紹了PHP高并發(fā)高負(fù)載下的3種實(shí)戰(zhàn)場(chǎng)景解決方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05php foreach 使用&(與運(yùn)算符)引用賦值要注意的問(wèn)題
foreach 通過(guò)在 $value 之前加上 & 很容易就能修改數(shù)組的單元,在 foreach 使用引用時(shí)要注意了。也可以在處理完后立即斷開(kāi)引用關(guān)系,后面就不會(huì)有上述情況了。2010-02-02解析PHP中VC6 X86和VC9 X86的區(qū)別及 Non Thread Safe的意思
本篇文章是對(duì)PHP中VC6 X86和VC9 X86的區(qū)別及 Non Thread Safe的意思進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06