PHP一般方法靜態方法與構造方法區別


一般方法:需要先將類實例化,再調用方法

簡單舉例:


class C1{
    public function show(){
    echo "這個是是一般方法";
    }
$c1=new C1();
$c1->show();


靜態方法,不需要將類實例化,可直接調用

簡單舉例:


class C2{
    public static function show(){
    echo "這個是靜態方法";
    }
$c2::show();

看起來好像只是少寫一行代碼,一般方法需要先new一下類,而靜態方法直接::就可以,那么這兩者究竟有啥區別呢?
作為一個新手,經過各種搜索,暫時發現這么多,以后再補充。

從性能來講:

    靜態方法從程序運行開始,就實例生成內存,所以可以直接調用,執行效率會高很多,同理會占用內存,如果程序大了,占用內存過多,會影響系統運行速度。

    非靜態方法在實例化的時候開始生成內存,在調用時申請零散的內存,所以執行效率會慢很多,用完后就釋放內存,對系統內存占用比較友好。
    總體來講都各有優勢,什么時候用,該用哪個,視情況而定。

構造方法:
    PHP允行開發者在一個類中定義一個方法作為構造函數。具有構造函數的類會在每次創建新對象時先調用此方法,所以非常適合在使用對象之前做一些初始化工作。
    這個有點類似於JS中的“window.onload=function(){}”。比如說,你定義了一個$name,那么如果沒有構造函數,在你在初始化類的時候$name的值就是空的,你可以定義一個構造函數來給$name一個值,因為很多時候我們並不允許某些對象變量的值是空的,或者因為空值而報錯。
特點:
1、名稱必須是 __construct() 。
2、在一個類中只能聲明一個構造方法。
3、不能主動的調用這個方法,而是只有在每次創建對象的時候都會去調用一次構造方法。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM