第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

PHP 包含的腳本不讀取相同的靜態(tài)變量?

PHP 包含的腳本不讀取相同的靜態(tài)變量?

PHP
楊魅力 2023-07-08 16:17:22
我在通過包含的文件在類之間調(diào)用靜態(tài)變量/方法時(shí)遇到問題。這是代碼示例:<?phpclass Router{    static $instance;    public static function GetInstance()    {        if(self::$instance == null)            self::$instance = new self;        return self::$instance;    }    function __construct()    {        include 'test2.php';        /*  test2.php CONTENTS          */        /*  Routes::doSomething();      */    }    public function doSomthing()    {        echo 1;    }}class Routes{    // test.php script will call this function    // this function will try to get Router static instance to call a dynamic function    // keep in mind that the static instance of Router was already created    // some how test2.php script will not be able to read the static instance and will create another one    // and that will cause the page keep including and running the same script over and over and idk why    public static function doSomething()    {        Router::GetInstance()->doSomthing();    }}$router = Router::GetInstance();其中 test2.php 中的腳本Routes::doSomething();將無法讀取 Router 類中的靜態(tài) $instance。我無法弄清楚問題是什么,并嘗試查看包含腳本是否會(huì)導(dǎo)致此類問題,但我什至不知道應(yīng)該尋找什么。請(qǐng)幫忙,謝謝。
查看完整描述

1 回答

?
呼啦一陣風(fēng)

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超6個(gè)贊

經(jīng)過一些測(cè)試發(fā)現(xiàn) PHP 無法處理此類腳本。因?yàn)槁暶髯兞康倪^程以及PHP如何處理它。


我無法提供任何來源來支持我要說的內(nèi)容,這只是我迄今為止從測(cè)試中了解到的內(nèi)容。但我會(huì)嘗試用我較低的英語水平來解釋它,希望以后能對(duì)某人有所幫助。


因此,在 PHP 中,當(dāng)您嘗試使用類對(duì)象聲明靜態(tài)/動(dòng)態(tài)變量時(shí),如下所示:


self::$Instance = new TestClass;


PHP 將按步驟處理命令,以這種方式工作:


步驟1 :Declare self::$Instance as null


第2步 :Create temporary_object from TestClass class


步驟#3:Run __construct method in temporary_object then wait until its done


步驟4 :Set self::$Instance as temporary_object which is instanceof TestClass


我的代碼中存在問題,您可以看到我試圖在__construct方法中包含.php 文件。包含的文件將運(yùn)行一個(gè)靜態(tài)函數(shù),該函數(shù)將嘗試讀取Router類中的 self::$instance 。雖然static::$Instance未設(shè)置并且仍然等于null,因?yàn)開_construct尚未完成。


所以基本上不要嘗試在 __construct 方法中讀取同一類的靜態(tài)實(shí)例。


這里的腳本應(yīng)該是這樣的,因?yàn)槲业慕忉尣磺宄?/p>


<?php


class Router

{

    static $instance;


    public static function GetInstance()

    {

        if(self::$instance == null)

            self::$instance = new self;


        return self::$instance;

    }


    function __construct()

    {


    }


    public function LoadFiles(){

        

        include 'test2.php';


        /*  test2.php CONTENTS          */

        /*  Routes::doSomething();      */

    }


    public function doSomthing()

    {

        echo 1;

    }

}


class Routes

{

    // test.php script will call this function

    // this function will try to get Router static instance to call a dynamic function

    // keep in mind that the static instance of Router was already created

    // some how test2.php script will not be able to read the static instance and will create another one

    // and that will cause the page keep including and running the same script over and over and idk why

    public static function doSomething()

    {

        Router::GetInstance()->doSomthing();

    }


}


$router = Router::GetInstance();

$router->LoadFiles();


查看完整回答
反對(duì) 回復(fù) 2023-07-08
  • 1 回答
  • 0 關(guān)注
  • 159 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)