成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導(dǎo)航首頁 ? 技術(shù)教程 ? PHP5權(quán)威編程閱讀學(xué)習(xí)筆記 附電子書下載
全站頭部文字 我要出現(xiàn)在這里
PHP5權(quán)威編程閱讀學(xué)習(xí)筆記 附電子書下載 755 2023-12-09   

PHP 5 權(quán)威編程(PHP 5 Power Programming) PDF下載地址 http://www.gimoo.net/books/28207.html

PHP4中,不使用__construct()作為構(gòu)造函數(shù)的名字,必須使用類的名字定義一個方法,就像在C++中一樣。
PHP5中,使用新的統(tǒng)一的構(gòu)造函數(shù)命名方式:__construct(),當(dāng)然,使用類名同樣也是可以的。
但是,你如果兩個同時使用的話,系統(tǒng)默認(rèn)會使用__construct()的形式。

<?php
class Person{
//PHP4中的方法
public function Person(){
echo "PHP4中的方法";
}
//PHP5推薦使用的方法
public function __construct(){
echo "PHP5推薦使用的方法";
}
public function say(){
}
}
$p1=new Person();
?>

在構(gòu)造函數(shù)中不能返回值,所以從構(gòu)造函數(shù)內(nèi)產(chǎn)生一個錯誤最常用的做法就是拋出一個異常。
代碼如下:

<?php
class Person{
private $_age;
public function __construct($age){
try {
if ($age<120){
$this->_age=$age;
}else {
throw new Exception("您輸入的年齡過大");
}
}catch (Exception $e){
echo $e->getMessage();
}
}
}
$p1=new Person(121);
?>

訪問控制
對象屬性的訪問保護(hù)是OOP的一個關(guān)鍵范例
Public:可以在任何地方被訪問
Protected:類成員可以被其所在類的子類和父類從對象內(nèi)部的方法訪問
Private:類成員只能被其所在類從對象內(nèi)部的方法訪問,而無法從繼承類的成員中訪問到。因?yàn)樗接贸蓡T不會被繼承,所以兩個相關(guān)的類完全可以分別聲明一個名字相同的私有變量。
也就是兩個類都只能看到自己的私有屬性,私有成員之間是沒有關(guān)系的。
例子:

<?php
/**
* Define MyClass
*/
class MyClass
{
public $public = 'Public';
protected $protected = 'Protected';
private $private = 'Private';
function printHello()
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}
$obj = new MyClass();
echo $obj->public; // 這行能被正常執(zhí)行
echo $obj->protected; // 這行會產(chǎn)生一個致命錯誤
echo $obj->private; // 這行也會產(chǎn)生一個致命錯誤
$obj->printHello(); // 輸出 Public、Protected 和 Private
/**
* Define MyClass2
*/
class MyClass2 extends MyClass
{
// 可以對 public 和 protected 進(jìn)行重定義,但 private 而不能
protected $protected = 'Protected2';
function printHello()
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}
$obj2 = new MyClass2();
echo $obj->public; // 這行能被正常執(zhí)行
echo $obj2->private; // 未定義 private
echo $obj2->protected; // 這行會產(chǎn)生一個致命錯誤
$obj2->printHello(); // 輸出 Public、Protected2,但不會輸出 Private

注意:類中的方法都必須使用關(guān)鍵字public、protected 或 private 進(jìn)行定義。如果沒有設(shè)置這些關(guān)鍵字,則該方法會被設(shè)置成默認(rèn)的 public。
靜態(tài)方法
靜態(tài)方法可以不創(chuàng)建對象實(shí)例就通過 類名::靜態(tài)方法 來調(diào)用,也可以在一個對象實(shí)例中通過$this->靜態(tài)方法或self::靜態(tài)方法來調(diào)用。

<?php
class Foo
{
public static $my_static = 'foo';
public static function staticValue() {
return self::$my_static;//在類中訪問靜態(tài)成員使用self關(guān)鍵字
}
}
$obj=new Foo();
echo $obj->staticValue();//方式一
echo Foo::staticValue();//方式二
?>

克隆對象
在PHP4中,new一個對象的時候,返回的是“對象本身”
在PHP5中,new一個對象的時候,返回的是“指向?qū)ο蟮木浔?
這意味著在PHP5中,將對象實(shí)例($obj1)賦值給另一個變量($obj2)的時候,兩個對象都是指向同一塊內(nèi)存區(qū)域。
比如 :

<?php
class test{
public $str;
}
$obj1=new test();
$obj1->str="obj1";
$obj2= $obj1;
$obj2->str="obj2";
echo $obj1->str;//將輸出“obj1”
?>

由于$obj1和$obj2指向的是同一塊內(nèi)存區(qū)域,因此使用任何一個對象修改其中的成員變量的值的時候,都會影響到另一個對象。
但是在有些時候,我們確實(shí)需要復(fù)制一個對象的拷貝(兩塊相互獨(dú)立的內(nèi)存區(qū)域),這時候可以使用語言命令clone
參考下面的例子;

<?php
class test{
public $str;
}
$obj1=new test();
$obj1->str="obj1";
$obj2= clone $obj1;
$obj2->str="obj2";
echo $obj1->str;//將輸出“obj2”
?>

parent::和self::
self::指向當(dāng)前類,而且通常用來訪問靜態(tài)成員,方法和常量
parent::指向父類,而且它經(jīng)常被用來調(diào)用父類的構(gòu)造函數(shù)和方法,也可以用來訪問父類的成員和常量
注意:你應(yīng)該使用parent::而不是父類的某個具體的名字,因?yàn)檫@樣可以令你方便的更改你的類的層次。
例子:

<?php
class Father{
public function __construct(){
echo "調(diào)用父類的構(gòu)造函數(shù)<br>";
}
}
class Son extends Father {
public function __construct(){
parent::__construct();//方式一
// Father::__construct();//方式二
echo "調(diào)用子類的構(gòu)造函數(shù)";
}
}
$son=new Son();
?>

結(jié)果:
調(diào)用父類的構(gòu)造函數(shù)
調(diào)用子類的構(gòu)造函數(shù)
推薦使用方式一,原因上面已經(jīng)說了。
instanceof實(shí)例

<?php
class Rectangle {
public $name=__CLASS__;
}
class Square extends Rectangle {
public $name=__CLASS__;
}
class Circle{
public $name=__CLASS__;
}
function checkIfRectangle($shape){
if ($shape instanceof Rectangle ){
echo $shape->name;
}else {
echo "該對象不是Rectangle類的實(shí)例";
}
}
checkIfRectangle(new Square());//輸出:Square
checkIfRectangle(new Circle());//輸出:該對象不是Rectangle類的實(shí)例
?>

注:__CLASS__是一個特殊的常量,用來存儲當(dāng)前類的名字

主站蜘蛛池模板: 电视剧一帘幽梦| 凌晨晚餐| 吻胸亲乳激情大尺度| 大学英语精读4课后答案| 黄网站在线观看视频| 熊出没免费电影| 祝福你| 凤凰电视台| 装饰色彩| 周星驰原名| | 山西影视频道| 我不再什么作文500字| 乱世三人行| 周三强电视剧全集免费| 四川影视文艺频道| 苏教版二年级下册数学| 德国老太性视频播放| 许良| 林柒予| 《棋魂》电视剧| 大老鼠图片| ?1,| 相声剧本(适合学生)| 紧缚视频 | vk| 荆棘花| 李美淑主演的师生恋电影在线观看| 黑帮大佬365日| cf脚本| 浙江卫视今天节目单| 最可爱的人 电影| 热点新闻素材| 鸡毛信电影| 继承者计划 电视剧| 儿媳妇电视剧在线观看| 容易失禁的女仆桃乃木香奈| 探究事物的本质的读后感想| 熊欣欣个人资料| 1988年英国的白蛇传说| 高手论坛| b超怎么看是男孩女孩|

!!!站長長期在線接!!!

網(wǎng)站、小程序:定制開發(fā)/二次開發(fā)/仿制開發(fā)等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103