1

これは私のクラスコードです:

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;

助けてくれてありがとう。

4

5 に答える 5

2

あなたはかなりの数の概念を混同しています。

まず、 class の新しいオブジェクトを作成する必要がありますmyClass:

$nCls = new myClass();

次に、そのクラスでメンバー関数 (メソッド) を呼び出すことができます。

$nCls->result();

ではresult()、次を使用して他のメソッドを呼び出すだけです$this

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

ただし、これは何もしないことに注意してください。変数$myvarはローカルであり、クラス属性ではありません。オブジェクト指向プログラミング、特にオブジェクト指向 PHPをよく読むことをお勧めします。

于 2012-11-20T09:51:38.260 に答える
2
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();

これを行うことはできますが、これは良い習慣ではありません。

于 2012-11-20T09:55:42.387 に答える
1
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";
    }

}
于 2013-10-23T11:36:20.050 に答える
1

問題はスコープです。別の関数内で変数を呼び出し、クラスのプロパティを定義して関数から設定し、次の方法でプロパティを取得することはできませんresult()

class myClass
{
   public $myvar;

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

   public function result()
   {
      echo $this->myvar;
   }
}
于 2012-11-20T09:49:03.597 に答える
1

問題は、 method のスコープで$myvar のみ宣言することですmyFunc()。つまり、そのメソッドの外では見えません。代わりにクラス メンバーとして宣言します。

class myClass
{

   private $myvar;

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

   public function result()
   {
      echo myClass::myFunc()->$myvar;
   }
}
于 2012-11-20T09:49:20.443 に答える