sql >> データベース >  >> RDS >> Mysql

非オブジェクトのメンバー関数の呼び出し-PHP

    $movie->getByPerma($perma,$language); 
    

    オブジェクトではないものを返しています。

    だから私は

    print_r($movie)
    

    2行目で、私が得ているものを確認してください。

    2番目の奇妙なことは次のとおりです:

    $movie['rating'] = $movie->getRating($movie['id']);
    

    左側では$movieを配列として使用しており、右側ではそれをオブジェクトとして使用しています。次に、$movie['id']を配列として使用するパラメーターを送信しました。

    だから:

    配列を取得している場合、配列は関数を持つことができません。関数はクラスの外部にある必要があり、次のように呼び出されます。

    getRating($movie['id']) 
    

    の代わりに
    $movie->getRating($movie['id']).
    

    オブジェクトを取得していて、そのオブジェクトが関数を実装している場合

    getRating($movie_id)
    

    その場合、オブジェクトのプロパティにアクセスする方法は次のとおりです。

    $movie->rating and $movie->id
    

    プロパティはパブリックとして宣言されていると思います。ただし、これは正しい方法ではありません...プロパティはプライベートである必要があり、次のようなオブジェクトプロパティのゲッターとセッターを実装する必要があります:

     private $rating;
     public function get_rating()
    {
      return $this->rating; 
    }
    

    この場合、評価を取得するには、

    を使用します
     $movie->get_rating();
    

    そして、評価に値を割り当てるには、実装します

      public function set_rating($r)
      {
         $this->rating=$r; 
      }
    

    そして、次のように値を割り当てます:

    $movie->set_rating($some_rating);
    

    私がすべてを助けたり、もっと混乱させたりした場合は、Dunno:Sですが、遠慮なく質問してください:)



    1. 行がまだ存在しない場合にのみ行を挿入します

    2. カンマ区切りの列値を行に分割(展開)します

    3. 複数の行を返すサブクエリ

    4. MySQLとSymfony2