最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php基礎(chǔ)知識:類與對象(1)

 更新時間:2006年12月13日 00:00:00   作者:  

類的定義:
   以關(guān)鍵字 class 開頭,后面跟著類名,可以是任何非 PHP 保留字的名字。后面跟著一對花括號,里面包含有類成員和方法的定義。

偽變量$this
可以在當(dāng)一個方法在對象內(nèi)部調(diào)用時使用。$this 是一個到調(diào)用對象(通常是方法所屬于的對象,但也可以是另一個對象,如果該方法是從第二個對象內(nèi)靜態(tài)調(diào)用的話)的引用。
//??靜態(tài)調(diào)用的內(nèi)部到底是怎樣的?
看個例子:
class A
{
   function foo()
   {
       if (isset($this)) {
           echo '$this is defined (';
           echo get_class($this);
           echo ")\n";
       } else {
           echo "\$this is not defined.\n";
       }
   }
}
class B
{
   function bar()
   {
       A::foo();
   }
}
$a = new A();
$a->foo();
A::foo();
$b = new B();
$b->bar();
B::bar();
輸出結(jié)果為:
$this is defined (a)
$this is not defined.
$this is defined (b)
$this is not defined.
/*我希望知道這個例子的內(nèi)存等的具體實(shí)現(xiàn),我暫時無法理解。如果有人可以講清楚,可以告訴我。我們宿舍牛頭現(xiàn)在正在冬眠,等他醒來,我會問。*/

new
要創(chuàng)建一個對象的實(shí)例,必須創(chuàng)建一個新對象并將其賦給一個變量。當(dāng)創(chuàng)建新對象時該對象總是被賦值,除非該對象定義了構(gòu)造函數(shù)并且在出錯時拋出了一個異常。
當(dāng)把一個對象已經(jīng)創(chuàng)建的實(shí)例賦給一個新變量時,新變量會訪問同一個實(shí)例,就和用該對象賦值一樣。此行為和給函數(shù)傳遞入實(shí)例時一樣。可以用克隆給一個已創(chuàng)建的對象建立一個新實(shí)例。

(這幾句話雖然很短,但是未必容易理解。)
例子如下:
class SimpleClass
{
   // 成員聲明
   public $var = 'a default value';

   // 方法聲明
   public function displayVar() {
       echo $this->var;
   }
}

//看下面的圖.1>new 在heap(堆)中實(shí)例化一個對象。2>將指針$instance指向他
$instance = new SimpleClass();
//3>將指針$assigned指向heap中的實(shí)例化對象
$assigned   =  $instance;
//4>將$instance的引用(地址)賦值給$reference
$reference  =& $instance;
$instance->var = '$assigned will have this value';
$instance = null;
// 5>間斷$instance與heap中實(shí)例的連接。
var_dump($instance);
var_dump($reference);
var_dump($assigned);
輸出:
NULL
NULL
object(SimpleClass)#1 (1) {
  ["var"]=>
    string(30) "$assigned will have this value"
}
圖示整個過程:


類繼承extends
一個類可以在聲明中用 extends 關(guān)鍵字繼承另一個類的方法和成員。不能擴(kuò)展多個類,只能繼承一個基類。

被繼承的方法和成員可以通過用同樣的名字重新聲明被覆蓋,除非父類定義方法時使用了 final 關(guān)鍵字??梢酝ㄟ^ parent:: 來訪問被覆蓋的方法或成員。(繼承的機(jī)制到底怎樣的?)
源代碼如下:
class ExtendClass extends SimpleClass
{
   // Redefine the parent method
   function displayVar()
   {
       echo "Extending class\n";
       parent::displayVar();
   }
}
$extended = new ExtendClass();
$extended->displayVar();

輸出:
Extending class
a default value

相關(guān)文章

最新評論

手机| 武宣县| 胶南市| 道孚县| 尖扎县| 德钦县| 开平市| 嫩江县| 和静县| 无锡市| 漾濞| 金寨县| 宣化县| 扶沟县| 陵川县| 柏乡县| 南城县| 遂宁市| 陇西县| 海宁市| 若尔盖县| 溧阳市| 缙云县| 乌拉特中旗| 乃东县| 澄城县| 石楼县| 青冈县| 佳木斯市| 军事| 赞皇县| 平陆县| 澜沧| 柘荣县| 棋牌| 汨罗市| 上林县| 那坡县| 淮南市| 四川省| 高州市|