2017-04-14 10 views
0

配列を返す関数にいくつかの問題があります。PHPコードにオブジェクト指向のアプローチを使用し、いくつかの静的関数を持つクラスを作成しようと決心しました。オブジェクトを使用してアクセスする必要はありません。配列を返すPHP関数

public static function decideCategory($tweets) { 

    $tweet = $tweets; 

    if(in_array($tweet, self::$food)) { 
     echo "\nOur " . $tweet . " is under food\n"; 
    } //if statements of the same nature below as well. 

} 

さて、この関数は$の食品が一番上に配列としてdefindedされるエラーをスローしないという意味で動作します。私のコードでは、同じクラス内で、私は次の関数を作ることにしました。しかし、もともと私は単純にプライベート静的変数として一番上に定義された$フードを持っていましたが、次に私はin_arrayに渡した次の関数を持っていました。

public static function getFood() 
    { 
     self::$food = array("Wendys", "McDonalds", "Wendy's", "Chic Fil A", "Chic-Fil-a", "Burger", "TGI", "BBQ", "Grilling", "Wine", "Tasty", "Yum", "IHOP", "Pancakes", "Pizza", "Cake" 
     ,"Baking"); 
     return self::$food; 
    } 

しかし、それはそのin_arrayが第2引数の配列値を予想し、その代わりに、それはnullが代わりに渡されたことを見ているというエラーが返されます。それはなぜですか、そして変数myselvsではなくメソッドを使って比較を行うことができます。これがJavaの場合、これはどうやってやるのでしょうか?同様のロジックを返すように見えるので、PHPがこれらの問題を抱える理由はわかりません。

+1

I以下のように

static $food; 

更新あなたの方法として、それを宣言した場合の自己:: $食べ物がnullで呼び出すまで、はい、それはエラーが原因でしょう強くこれが[XY問題](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem/66378#66378)であると思われます。ここで何をしようとしていますか? – Machavity

+2

オブジェクト指向のアプローチを使いたいのであれば、なぜオブジェクトの使用を避けようとしていますか? –

+0

スタティックスを使用するのはオブジェクト指向では完全ではありませんが、関数 – SomeStudent

答えて

3

あなたが自己:: getFood()あなたは

public static function decideCategory($tweets) 
{ 
    $tweet = $tweets; 
    $food = self::getFood(); 
    if(in_array($tweet, $food)) { 
     echo "\nOur " . $tweet . " is under food\n"; 
    } //if statements of the same nature below as well. 
} 
+0

を呼び出すのではなく、クラス名からアクセスしていますが、 'in_array($ tweet、self :: getFood()) – AbraCadaver

+0

も同様です。もともとは、self :: getFood()ですが、それはnullであると苦情を言いました。 – SomeStudent

+0

@SomeStudent私はこのhttps://gist.github.com/anonymous/9c82067e09479123b9c44dfa8b743257を試してみましたが、エラーは発生しませんでした。 – swaveg