PHP5試用(一)
Jun 21, 2016 am 09:14 AMphp5
雖然 PHP5 還沒有正式發(fā)布(開發(fā)版本已經(jīng)提供下載),但我們現(xiàn)在就可以開始體驗一下新的版本 將要帶給我們的驚喜。在以下的介紹中,我們將重點講述 PHP5 中的三大特色功能。這三大特點為:
* 新的對象模式 (New Object Mode)
* 異常處理 (Exceptions)
* 名稱空間 (Namespace)
在開始之前,要聲明兩點:
* 文章中的例子為了說明如何操作,有些部分使用了 PHP4 的表現(xiàn)手段,這僅僅是為了提高文章的可讀性。
* 文章中描述的部分與 PHP5 的最終發(fā)布版可能會有一些出入
在 PHP5 沒有最終正式發(fā)布前,你可以隨時從 http://snaps.php.net 下載到最新的編譯版本來親自體驗一下 PHP5 所帶給我們這些嶄新的功能。
新的對象模式
PHP5 中的對象已經(jīng)進行了較系統(tǒng)、較全面的調(diào)整,現(xiàn)在的樣子可能看起來會有些類似于 Java。本小節(jié)著重講述 PHP5 中新的對象模式,并舉了一些較簡易的例子來說明。就讓本節(jié)成為你的 PHP5 之旅的一個新起點吧。:)
* 構(gòu)造函數(shù)和析構(gòu)函數(shù)
* 對象的引用
* 對象的克隆
* 對象中的私有、公共及受保護模式
* 接口 (Interfaces)
* 抽象類
* __call
* __set 和 __get
* 靜態(tài)成員
構(gòu)造函數(shù)和析構(gòu)函數(shù)
在 PHP4 中,當(dāng)函數(shù)與對象同名時,這個函數(shù)將成為該對象的構(gòu)造函數(shù),并且在 PHP4 中沒有析構(gòu)函數(shù)的概念。
在 PHP5 中,構(gòu)造函數(shù)被統(tǒng)一命名為 __construct,并且引入了析構(gòu)函數(shù)的概念,被統(tǒng)一命名為 __destruct。
例一:構(gòu)造函數(shù)和析構(gòu)函數(shù)
class foo {
var $x;
function __construct($x) {
$this->x = $x;
}
function display() {
print($this->x);
}
function __destruct() {
print("bye bye");
}
}
$o1 = new foo(4);
$o1->display();
?>
在上面的例子中,當(dāng)你終止調(diào)用 foo 類的時候,其析構(gòu)函數(shù)將會被調(diào)用,上例中會輸出 “bye bye”。
對象的引用
眾所周知,在PHP4 中,傳遞變量給一個函數(shù)或方法,實際是把這個變量做了一次復(fù)制,也就意味著你傳給函數(shù)或方法的是這個變量的一個副本,除非你使用了引用符號 “&” 來聲明是要做一個引用,而不是一個 Copy。在 PHP5 中,對象總是以引用的形式存在的,對象中的賦值操作同樣也都是一個引用操作。
例二:對象的引用
class foo {
var $x;
function setX($x) {
$this->x = $x;
}
function getX() {
return $this->x;
}
}
$o1 = new foo;
$o1->setX(4);
$o2 = $o1;
$o1->setX(5);
if($o1->getX() == $o2->getX()) print("Oh my god!");
?>
對象的克隆
如上所述,當(dāng)一個對象始終以引用的形式來被調(diào)用時,如果我想得到該對象的一個副本,該怎么辦呢?PHP5 提供了一個新的功能,就是對象的克隆,語法為 __clone。
例三:對象的克隆
class foo {
var $x;
function setX($x) {
$this->x = $x;
}
function getX() {
return $this->x;
}
}
$o1 = new foo;
$o1->setX(4);
$o2 = $o1->__clone();
$o1->setX(5); if($o1->getX() != $o2->getX()) print("Copies are independant");
?>
對象克隆的方法在其它很多應(yīng)用程序語言中都是存在的,所以你不必擔(dān)心它的穩(wěn)定性。:)
對象中的私有、公共及保護模式
PHP4 中,一個對象的所有方法和變量都是公共的,這意味著你可以在一個對象的外部操作其中的任意一個變量和方法。PHP5 引入了三種新的用來控制這種存取權(quán)限的模式,它們是:公共的(Public)、受保護的(Protected)及私有的(Private)。
公共模式(Public):允許在對象外部進行操作控制。
私有模式(Private):只允許本對象內(nèi)的方法對其進行操作控制。
受保護模式(Protected):允許本對象及其父對象對其進行操作控制。
例四: 對象中的私有、公共及受保護模式
class foo {
private $x;
public function public_foo() {
print("I'm public");
}
protected function protected_foo() {
$this->private_foo(); //Ok because we are in the same class we can call private methods
print("I'm protected");
}
private function private_foo() {
$this->x = 3;
print("I'm private");
}
}
class foo2 extends foo {
public function display() {
$this->protected_foo();
$this->public_foo();
// $this->private_foo(); // Invalid! the function is private in the base class
}
} $x = new foo();
$x->public_foo();
//$x->protected_foo(); //Invalid cannot call protected methods outside the class and derived classes
//$x->private_foo(); //Invalid private methods can only be used inside the class $x2 = new foo2();
$x2->display();
?>
提示:對象中的變量總是以私有形式存在的,直接操作一個對象中的變量不是一個好的面向?qū)ο缶幊痰牧?xí)慣,更好的辦法是把你想要的變量交給一個對象的方法去處理。
接口 (Interfaces)
眾所周知,PHP4 中的對象支持繼承,要使一個對象成為另一個對象的派生類,你需要使用類似 “class foo extends parent” 的代碼來控制。 PHP4 和 PHP5 中,一個對象都僅能繼承一次,多重繼承是不被支持的。不過,在 PHP5 中產(chǎn)生了一個新的名詞:接口,接口是一個沒有具體處理代碼的特殊對象,它僅僅定義了一些方法的名稱及參數(shù),此后的對象就可以方便的使用 'implement' 關(guān)鍵字把需要的接口整合起來,然后再加入具體的執(zhí)行代碼。
例五:接口
interface displayable {
function display();
}
interface printable {
function doprint();
}
class foo implements displayable,printable {
function display() {
// code
} function doprint() {
// code
}
}
?>
這對提高代碼的可讀性及通俗性有很大的幫助,通過上面的例子可以看到,對象 foo 包含了 displayable 和 printable 兩個接口,這時我們就可以清楚的知道,對象 foo 一定會有一個 display() 方法和一個 print() 方法,只需要去了解接口部分,你就可以輕易的操作該對象而不必去關(guān)心對象的內(nèi)部是如何運作的。

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Many users will choose the Huawei brand when choosing smart watches. Among them, Huawei GT3pro and GT4 are very popular choices. Many users are curious about the difference between Huawei GT3pro and GT4. Let’s introduce the two to you. . What are the differences between Huawei GT3pro and GT4? 1. Appearance GT4: 46mm and 41mm, the material is glass mirror + stainless steel body + high-resolution fiber back shell. GT3pro: 46.6mm and 42.9mm, the material is sapphire glass + titanium body/ceramic body + ceramic back shell 2. Healthy GT4: Using the latest Huawei Truseen5.5+ algorithm, the results will be more accurate. GT3pro: Added ECG electrocardiogram and blood vessel and safety

The differences between php5 and php8 are in terms of performance, language structure, type system, error handling, asynchronous programming, standard library functions and security. Detailed introduction: 1. Performance improvement. Compared with PHP5, PHP8 has a huge improvement in performance. PHP8 introduces a JIT compiler, which can compile and optimize some high-frequency execution codes, thereby improving the running speed; 2. Improved language structure, PHP8 introduces some new language structures and functions. PHP8 supports named parameters, allowing developers to pass parameter names instead of parameter order, etc.

Why Snipping Tool Not Working on Windows 11 Understanding the root cause of the problem can help find the right solution. Here are the top reasons why the Snipping Tool might not be working properly: Focus Assistant is On: This prevents the Snipping Tool from opening. Corrupted application: If the snipping tool crashes on launch, it might be corrupted. Outdated graphics drivers: Incompatible drivers may interfere with the snipping tool. Interference from other applications: Other running applications may conflict with the Snipping Tool. Certificate has expired: An error during the upgrade process may cause this issu simple solution. These are suitable for most users and do not require any special technical knowledge. 1. Update Windows and Microsoft Store apps

Function means function. It is a reusable code block with specific functions. It is one of the basic components of a program. It can accept input parameters, perform specific operations, and return results. Its purpose is to encapsulate a reusable block of code. code to improve code reusability and maintainability.

In Java, private means "private" and is an access control modifier used to modify classes, properties and methods. Class members modified with private can only be accessed and modified by the methods of the class itself, and cannot be accessed and referenced by any other class (including subclasses of the class); therefore, the private modifier has the highest level of protection.

How to change port 80 in php5: 1. Edit the port number in the Apache server configuration file; 2. Edit the PHP configuration file to ensure that PHP works on the new port; 3. Restart the Apache server, and the PHP application will start running on the new port. run on the port.

Part 1: Initial Troubleshooting Steps Checking Apple’s System Status: Before delving into complex solutions, let’s start with the basics. The problem may not lie with your device; Apple's servers may be down. Visit Apple's System Status page to see if the AppStore is working properly. If there's a problem, all you can do is wait for Apple to fix it. Check your internet connection: Make sure you have a stable internet connection as the "Unable to connect to AppStore" issue can sometimes be attributed to a poor connection. Try switching between Wi-Fi and mobile data or resetting network settings (General > Reset > Reset Network Settings > Settings). Update your iOS version:

Detailed explanation of the role and function of the MySQL.proc table. MySQL is a popular relational database management system. When developers use MySQL, they often involve the creation and management of stored procedures (StoredProcedure). The MySQL.proc table is a very important system table. It stores information related to all stored procedures in the database, including the name, definition, parameters, etc. of the stored procedures. In this article, we will explain in detail the role and functionality of the MySQL.proc table
