2017-11-11 5 views
1

ここは私のクラスです。 getPostsメソッドは配列を返しますが、proceedPostsにはアクセスできません。ブラウザで印刷しようとすると、$result変数がdefinedではないというエラーが表示されます。他のクラスメソッドの結果にアクセスできない理由を理解できません

class myClass 
    { 
     public $myposts; 

     public function getPosts() 
     { 
      $result = $this->myposts = array('a','b','c'); 

      return $result; 

     } 

     public function handlePosts() 
     { 
      echo $result; 
     } 
    } 

    $myObj = new myClass(); 
    $myObj->getPosts(); 
    $myObj-> handlePosts(); 

誰でも私の理由を説明できますか?ありがとうございました。

答えて

0

最初の問題は$result;第二あなたはあなたのコードの作業はこれを試して作るのでtoStringを持っている必要があります配列をエコーし​​ようとしているhandlePosts()機能では知られていないです。

<?php 

    class myClass 
     { 
      public $myposts; 

      public function getPosts() 
      { 
       $result = $this->myposts = array('a','b','c'); 

       return $result; 

      } 

      public function handlePosts() 
      { 
       var_dump($this->getPosts()); 
      } 
     } 

     $myObj = new myClass(); 

     $myObj-> handlePosts(); 

    ?> 
+0

ありがとうございます。それは私のために働いた。 –

0

あなた$result変数がgetPosts()で作成されましたメソッドであり、このメソッド(または必要に応じてスコープ)にのみ存在し、存在します。

次のコードを持っていた場合は、この方法で作られているリターンは意味を成しています:

$result_from_get_post_method = $myObj->getPosts(); 

あなたは、クラス全体のアクセス変数を作りたい場合は、あなたが目の前に$thisを使用する必要があります変数名:

class myClass 
{ 
    public $myposts; 

    public $result; 

    public function getPosts() 
    { 
     $this->result = $this->myposts = array('a','b','c'); 

     return $this->result; 

    } 

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

$myObj = new myClass(); 
$result_of_method = $myObj->getPosts(); 
print($result_of_method); // prints result_of_method which contains array 
print($myObj->result); // does the same as line above, by calling object variable 
$myObj->handlePosts(); // echos the array 
関連する問題