茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    php static延遲靜態(tài)綁定
    來(lái)源:易賢網(wǎng) 閱讀:1724 次 日期:2014-08-22 11:15:31
    溫馨提示:易賢網(wǎng)小編為您整理了“php static延遲靜態(tài)綁定”,方便廣大網(wǎng)友查閱!

    如果你是一個(gè)懶惰的程序員,你看到以下代碼可能會(huì)惱火

    abstract class U{

    }

    class u1 extends U{

    public static function create(){

    return new u1();

    }

    }

    class u2 extends U{

    public static function create(){

    return new u2();

    }

    }

    這段代碼正常工作是沒(méi)問(wèn)題,但大量重復(fù)的代碼會(huì)很煩人

    我不想在每個(gè)子類(lèi)中添加create方法,如果把create方法放在超類(lèi)U中,代碼可能是

    abstract class U{

    public static function create(){

    return new self();

    }

    }

    class u1 extends U{

    function a(){}

    }

    class u2 extends U{

    }

    u1::create();

    看起來(lái)很優(yōu)雅整潔,現(xiàn)在我們把常見(jiàn)代碼放在一個(gè)位置,并用self作為對(duì)該類(lèi)的引用。但這里我們對(duì)self做了一個(gè)假設(shè)。

    實(shí)際上,self對(duì)該類(lèi)所起的作用與$this對(duì)對(duì)象所起的作用并不完全相同。self指的不是調(diào)用上下文,他指的是解析上下文,因此如果運(yùn)行上面的列子,將會(huì)得到

    Fatal error: Cannot instantiate abstract class U in D:wampwwwtestoopstatic.php on line 21

    因此self被解析為定義create的U,而不是解析為調(diào)用self的u1類(lèi)。

    php5.3之前,在這方面都有嚴(yán)格的限制,產(chǎn)生過(guò)很多笨拙的解決方案,php5.3引入了延遲靜態(tài)綁定及使用關(guān)鍵字 static

    static類(lèi)似self,但它指的是被調(diào)用的類(lèi)而不是包含類(lèi)。

    在以下例子中u1::create將生成u1對(duì)象,而不是實(shí)例化U對(duì)象

    abstract class U{

    public static function create(){

    return new static();

    }

    }

    class u1 extends U{

    }

    class u2 extends U{

    }

    u1::create();

    static不僅可以用于實(shí)例化,和self,parent一樣還可以作為靜態(tài)方法的調(diào)用標(biāo)識(shí)符,甚至是從非靜態(tài)上下文中調(diào)用

    abstract class U{

    private $group;

    public function __construct(){

    $this->group=static::getGroup();

    }

    public static function create(){

    return new static();

    }

    static function getGroup(){

    return 'default';

    }

    }

    class u1 extends U{

    }

    class u2 extends U{

    static function getGroup(){

    return 'u2';

    }

    }

    class u3 extends u2{

    }

    print_r(u1::create());

    echo '

    ';

    print_r(u3::create());

    u1 Object ( [group:U:private] => default )

    u3 Object ( [group:U:private] => u2 ),

    更多信息請(qǐng)查看IT技術(shù)專(zhuān)欄

    更多信息請(qǐng)查看網(wǎng)絡(luò)編程
    易賢網(wǎng)手機(jī)網(wǎng)站地址:php static延遲靜態(tài)綁定
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢(xún)回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢(xún)?yōu)闇?zhǔn)!

    2026上岸·考公考編培訓(xùn)報(bào)班

    • 報(bào)班類(lèi)型
    • 姓名
    • 手機(jī)號(hào)
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢(xún) | 簡(jiǎn)要咨詢(xún)須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
    云南網(wǎng)警備案專(zhuān)用圖標(biāo)
    聯(lián)系電話(huà):0871-65099533/13759567129 獲取招聘考試信息及咨詢(xún)關(guān)注公眾號(hào):hfpxwx
    咨詢(xún)QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報(bào)警專(zhuān)用圖標(biāo)