程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP面向對象代碼解析

PHP面向對象代碼解析

編輯:PHP綜合
<?php
class Point
{
//靜態成員,類內被使用self::$size,在類外Point::size
static $size=10;
//常量,使用時可以不用$
const PI=301415926;
//私有字段
private $id;
private $x;
private $y;
//使用自定義的方法進行訪問控制
function getId()
{
return $this->id;
}
//提供對私有字段的訪問控制
function __get($property_name)
{
if(isset($this->$property_name))
{
return $this->$property_name;
}
else
{
return NULL;
}
}
//提供對私有字段的寫入控制
function __set($property_name,$value)
{
if(is_double($value))
{
$this->$property_name=value;
}
else
{
echo "error: value is not a double number.";
}
}
//構造函數
function __construct($x,$y,$id=0)
{
$this->x=$x;
$this->y=$y;
$this->id=$id;
}
function Print_info()
{
echo $this->id,"<br>";
echo $this->x,"<br>";
echo $this->y,"<br>";
}

//析構函數
functionfunction __destruct()
{
echo "destruct function";
}
}
?>
抽象類

抽象類不能被實例化,用於為繼承的子類定義接口,包含有屬性和方法,其中必須有一個抽象方法。

繼承

繼承自抽象類的抽象方法,必須在子類中被重寫。被重寫的方法必須參數個數應該相同,可以有可選參數。

使用final修飾類,或者方法,這樣就不能被繼承或重寫。

<?php
abstract class Object
{
abstract public function Output();
final public function Msg()
{
echo "object msg","<br>";
}
}
final class Point extends Object
{
public function Output()
{
//調用基類的方法,當然可以$this->Msg(),方法被覆蓋時就不能用了吧!
parent::Msg();
echo "point","<br>";
}
}
class Rectangle extends Object
{
public function Output()
{
echo "Rectangle","<br>";
}
}
//多態性,限制傳入的類型為Object
function runObject(Object $obj)
{
$obj->Output();
}
runObject(new Point());
runObject(new Rectangle());
?>
接口

<?php
interface IUser
{
public function addUser();
}
class Administrator implements IUser
{
public function addUser()
{
echo "add user";
}
}
(new Administrator())->addUser();
?>
內置對象函數

__autoload — 嘗試加載未定義的類 | Attempt to load undefined class
call_user_method_array — 調用一個用戶方法,同時傳遞參數數組(已廢棄) | Call a user method given with an array of parameters
call_user_method — 對特定對象調用用戶方法(已廢棄) | Call a user method on an specific object
class_alias — 為一個類創建別名 | Creates an alias for a class
class_exists — 檢查類是否已定義 | Checks if the class has been defined
get_called_class — 後期靜態綁定("Late Static Binding")類的名稱 | the "Late Static Binding" class name
get_class_methods — 返回由類的方法名組成的數組 | Gets the class methods' names
get_class_vars — 返回由類的默認屬性組成的數組 | Get the default properties of the class
get_class — 返回對象的類名 | Returns the name of the class of an object
get_declared_classes — 返回由已定義類的名字所組成的數組 | Returns an array with the name of the defined classes
get_declared_interfaces — 返回一個數組包含所有已聲明的接口 | Returns an array of all declared interfaces
get_declared_traits — 返回所有已定義的 traits 的數組 | Returns an array of all declared traits
get_object_vars — 返回由對象屬性組成的關聯數組 | Gets the properties of the given object
get_parent_class — 返回對象或類的父類名 | Retrieves the parent class name for object or class
interface_exists — 檢查接口是否已被定義 | Checks if the interface has been defined
is_a — 如果對象屬於該類或該類是此對象的父類則返回 TRUE | Checks if the object is of this class or has this class as one of its parents
is_subclass_of — 如果此對象是該類的子類,則返回 TRUE | Checks if the object has this class as one of its parents or implements it.
method_exists — 檢查類的方法是否存在 | Checks if the class method exists
property_exists — 檢查對象或類是否具有該屬性 | Checks if the object or class has a property
trait_exists — 檢查指定的 trait 是否存在 | Checks if the trait exists
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved