对于那些还不熟悉这些概念的人,这里是关于 PHP 中面向对象编程的基本入门。对象是容器。它们包含代表单个抽象实体的定义函数和变量。面向对象编程的这一特性称为封装。这意味着单个胶囊可能包含旨在协同工作的多个函数和变量的定义。
例如,如果您想操作在电子商务网站上销售的产品,您可以拥有一个代表该产品的对象。它可能包含一些定义产品名称、描述、价格等的变量。它还可能包含一些函数来操作对象变量、存储或从数据库中检索产品的值、显示产品详细信息等。
在 PHP 中,对象是使用类定义的。类包含描述对象的函数和变量的所有定义。
这是一个简单产品类的示例:
class Product
{
var $name;
var $description;
var $price;
function RetrieveFromDatabase($id)
{
/* ... */
}
function Display()
{
echo 'Name: ', HtmlSpecialChars($this->name),
'<br>',
'Description: ', HtmlSpecialChars($this->description),
'<br>',
'Price: ', $this->price;
}
};
您可以使用new运算符创建对象。一个 PHP 脚本可以创建同一个类的多个对象。您可以在同一类定义的电子商务站点中出售两种不同的产品。
例如,如果您要出售 A 本书和 B 本书,您可以使用同一个类来操作其名称、描述、价格等。下面是一个如何创建 PHP 对象的示例:
$book_a = new Product();
$book_a->name = 'Book A';
$book_a->description = 'Some description of book A';
$book_a->price = 9.95;
$book_a->Display();
$book_b = new Product();
$book_b->RetrieveFromDatabase('id-of-book-b');
$book_b->Display();
类允许您在内部操作信息,而不必使用全局变量在不同的类函数之间共享信息。
例如,如果你想检索和显示数据库查询结果,你可以有一个类,其中一个函数执行查询,另一个函数显示它。他们使用类变量 $results 来存储和检索查询结果句柄。
class Query
{
var $results;
function Execute($query)
{
$this->results = mysql_query($query);
return $this->results !== false;
}
function Display()
{
while(($row = mysql_fetch_row($this->results)))
print_r($row);
}
};
$query = new Query;
if($query->Execute(
'SELECT name, description, price FROM product'
))
$query->Display();
如您所见,您不需要使用任何全局函数或任何全局变量来在类函数之间共享信息。产品的所有行为都封装在 Query 类中。
面向对象编程提供了其他重要功能,例如继承,它允许创建作为现有类扩展的新类。扩展类可能有更多的函数和变量。他们还可以重新定义已经在基类中定义的函数和变量。
面向对象编程与类的资源链接