首頁 >後端開發 >php教程 >詳解PHP中self與$this的區別

詳解PHP中self與$this的區別

小云云
小云云原創
2018-03-14 10:56:141683瀏覽

物件導向程式設計(OOP,Object OrientedProgramming)現已成為程式設計人員的基本技能。利用OOP的想法進行PHP的高階編程,對於提升PHP編程能力和規劃web開發架構都是很有意義的。

這裡我主要談的是this,self關鍵字之間的差別。從字面上來理解,分別是指這、自己。先初步解釋一下,this是指向目前物件的指標(可以看成C裡面的指標),self是指向目前類別的指標。我們這裡經常使用指針來描述。

因為經常用框架的緣故,所以對php底層的一些運行機制和方法都不會了,所以最近比較喜歡研究這些底層的東西,寫的東西雖然不是很好,但是自己一步步實地操作過來的,理解起來也比較容易,現在網上大多數的資料要么就是按照手冊抄過來很官方的一些話,要么就是那些千篇一律的文章,確實有些不好理解,所以只能自己動手來熟悉啦

一. self

.    1.self可以存取本類別中的靜態屬性和靜態方法,可以存取父類別中的靜態屬性和靜態方法。用self時,可以不用實例化的

  1. class self_test {  
        static$instance;  
        publicfunction __construct(){  
            self::$instance = 'instance';//静态属性只能通过self来访问
        }  
        publicfunction tank(){  
            return self::$instance;//访问静态属性
        }  
    }  
    $str = new self_test();  
    echo$str->tank();

#頁面輸出:instance

  1. class self_test {  
        static$instance;  
        publicfunction __construct(){  
            self::$instance = 'dell';  
        }  
        staticpublicfunction pentium(){  
            return self::$instance;//静态方法也可以继续访问静态变量,访问时需要加$
        }  
        publicfunction tank(){  
            return self::pentium();//访问静态方法pentium()
        }  
    }  
    $str = new self_test();  
    echo$str->tank();

#頁輸出:dell
     2.self可以存取const定義的常數

  1. class self_test {  
        const  NAME = 'tancy';  
        publicfunction tank(){  
            return self::NAME;  
        }  
    }  
    $str = new self_test();  
    echo$str->tank();
##頁輸出:tancy

#二.this

      1.this可以呼叫本類別中的方法和屬性,也可以呼叫父類別中的可以調整的方法和屬性,可以說除過靜態和const常數,基本上其他都可以使用this聯絡

    class self_test {  
        public$public;  
        private$private;  
        protected$protected;  
        publicfunction __construct(){  
            $this->public = 'public';  
            $this->private = 'private';  
            $this->protected = 'protected';  
        }  
        publicfunction tank(){  
            return$this->public;  
        }  
        publicfunction dell(){  
            return$this->private;  
        }  
        publicfunction datesrt(){  
            return$this->protected;  
        }  
    }  
    $str = new self_test();  
    echo$str->tank();  
    echo"</br>";  
    echo$str->dell();  
    echo"</br>";  
    echo$str->datesrt();
頁面輸出: public

       private
       protected

一句话,self是引用静态类的类名,而$this是引用非静态类的实例名。

相關推薦:

##您深入深入深入深入深入深入深入更新php self與$this的詳解_PHP教程

#

以上是詳解PHP中self與$this的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn