簡體   English   中英

PHP:從類中的另一個函數調用變量

[英]PHP : call variable from another function in class

這是我的課程代碼:

class myClass
{

   public function myFunc()
   {
      $myvar   =  'Test str';
   }

   public function result()
   {
      echo myClass::myFunc()->$myvar;
   }
}

我用這個:

   $nCls = new myClass;
   $nCls->result();

要顯示Test str形式為myFunc()但未顯示任何內容。 我認為問題是:

echo myClass::myFunc()->$myvar;

謝謝你的幫助。

您正在混淆很多概念。

首先,您必須創建類myClass的新對象:

$nCls = new myClass();

然后,您可以在該類上調用成員函數(方法):

$nCls->result();

result() ,您只需使用$this調用另一個方法:

public function result()
{
   echo $this->myFunc();
}

請注意,盡管這沒有任何作用。 變量$myvar是局部變量,不是類屬性。 我建議您閱讀有關面向對象的程序設計 ,尤其是面向對象的PHP

class myClass {
    public $myvar;
    public function myFunc() {
        $this->myvar = 'Test str';
        return $this;
    }

    public function result() {
        echo $this->myFunc()->myvar;
    }
}

$nCls = new myClass;
$nCls->result();

您可以這樣做,但這不是一個好習慣。

問題是范圍,您不能在另一個函數中調用變量,不能為類定義屬性並從函數中進行設置,然后使用result()檢索屬性:

class myClass
{
   public $myvar;

   public function myFunc()
   {
      $this->myvar   =  'Test str';
   }

   public function result()
   {
      echo $this->myvar;
   }
}

問題是您只能在方法myFunc()的范圍內聲明$myvar 這意味着在該方法之外不可見。 聲明為班級成員:

class myClass
{

   private $myvar;

   public function myFunc()
   {
      $this->myvar   =  'Test str';
   }

   public function result()
   {
      echo myClass::myFunc()->$myvar;
   }
}
include "views.php";
class Controller extends views{

    function index(){
        $this->head();  
        $this->home();
    }
    function privacy(){
        $this->head();
        $this->privc();
    }
    function about(){
        $this->head();
        $this->abt();
    }
    function address(){
        $this->head();
        $this->add();
    }
}
$obj=new Controller();

if(isset($_GET['fun'])){
    $obj->$_GET['fun']();
}
else{
    $obj->index();  
}



   This is views.php code


   class views{
    function head(){
        include "views/header.php";
        echo "<br>this is header";  
    }
    function abt(){
        include "views/about.php";
        echo "<br>This is about us page";   
    }
    function home(){
        include "views/home.php";
        echo "<br>This is Home page";
    }
    function privc(){
        include "views/privacy.php";
        echo "<br>This is privacy page";
    }
    function add(){
        include "views/address.php";
        echo "<br>This is address page";
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM