2017-01-18 17 views
-1

私は、PHPでオブジェクト指向プログラミングを実験しています。私のPHPコードをもっと使いやすく、よりモジュラーにするためです。この配列がPHPクラスの配列として認識されないのはなぜですか?

最終的にクリックして、私はそれを取得し、コード内でクラスを使用する利点を見ていますが、テストでは、私はかなりわからない問題に遭遇しました。

は、私は、ユーザーの名前の二つの配列を持つ

$commDocsAdminUsers 
$commDocsAdminExecutiveUsers 

私は新しい$あるCurrentUserを作成するには、次のクラスがあり、ユーザーが発見され、それらの2つの配列のどの見つけることin_array使用しようとしています。

私はそれが配列の配列であると思いませんと言うPHPのエラーを取得しておいてください。

Warning: in_array() expects parameter 2 to be array, null given in - on line 25 

ここに私が...

を使用してんですよ
<?php 
    //ARRAYS OF USERS TO CHECK AGAINST 
    $commDocsAdminUsers = array("kaisersolze", "bennyblanco", "carlitobrigante", "ashylarry", "claytonbigsby"); 
    $commDocsAdminExecutiveUsers = array("waltjr", "skylerwhite", "tuco", "skinnypete", "walterwhite"); 



class userLogin { 


    // ALLOWS US TO SET THE NAME OF USER 
    function set_name($new_name) { 
     $this->name = $new_name; 
    } 

    // ALLOWS US TO GET THE NAME OF USER 
    function get_name() { 
     return $this->name; 
    } 

    // ALLOWS US TO CHECK THE ACCESS LEVEL OF THE USER... FIND WHICH ARRAY USER IS IN 
    function check_access() { 
     if (in_array("kaisersolze", $commDocsAdminUsers)){ 
      return "Match found in comDocsUsers Array"; 
     } 
     else if (in_array($this->name, $commDocsAdminExecutiveUsers)){ 
       return "Match found in comDocsUsers Array"; 
     } 
     else { 
       return "No Access Allowed"; // USER NOT FOUND IN EITHER ARRAY 
      } 
     } 
    } 

    // NOW LETS DO SOME STUFF WITH OUR NEW CLASS 
    $currentUser = new userLogin(); // INVOKE THE NEW USER CLASS 
    $currentUser->set_name("kaisersolze"); // SET NAME OF CURRENT USER 

    print_r($currentUser); // SHOW THE FULL OBJECT $CURRENTUSER 
    echo '<BR>-------------------------------------------------------------<BR>'; 
    echo $currentUser->get_name(); // ECHO OUT THE NAME FOR THE $CURRENTUSER 
    echo '<BR>--------------------------------------------------------------<BR>'; 
    echo $currentUser->check_access(); // CHECK TO SEE WHICH ARRAY THE USER IS IN 

?> 

私のクラスからどのようにしてin_arrayを正常に実行できますか?

+0

グローバルにする – anon

+0

グローバル$ commDocsAdminExecutiveUsersを追加しました。グローバル$ commDocsAdminUsers;私のPHPの最上位にあり、それでも同じ結果が得られます。 – tamak

+0

@EdCottrell確かに、質問には(後見で)同じ回答がありますが、明らかに質問は「完全な重複」ではありません。私が時間と空間を曲げない限り。しかし、ありがとう。 – tamak

答えて

1

は、グローバル変数やクラスのプロパティに$ commDocsAdminUsers$ commDocsAdminExecutiveUsersを設定します。

class userLogin { 

    public static $commDocsAdminUsers = array("kaisersolze", "bennyblanco", "carlitobrigante", "ashylarry", "claytonbigsby"); 
    public static $commDocsAdminExecutiveUsers = array("waltjr", "skylerwhite", "tuco", "skinnypete", "walterwhite"); 


    // ALLOWS US TO CHECK THE ACCESS LEVEL OF THE USER... FIND WHICH ARRAY USER IS IN 
    function check_access() { 
     if (in_array("kaisersolze", self::commDocsAdminUsers)){ 
      return "Match found in comDocsUsers Array"; 
     } 
     else if (in_array($this->name, self::commDocsAdminExecutiveUsers)){ 
       return "Match found in comDocsUsers Array"; 
     } 
     else { 
       return "No Access Allowed"; // USER NOT FOUND IN EITHER ARRAY 
      } 
     } 
    } 
+0

これはうまくいきましたが、私は$記号を以下のように使用しなければなりませんでした:self :: $ commDocsAdminExecutiveUsers – tamak

関連する問題