4

私はactivecollabカスタムモジュールのアクセス許可に取り組んでおり、静的メソッドの関数を呼び出そうとするとこのエラーメッセージが表示されます。理由はわかりません。助けてください。本当に感謝します..

Parse error: parse error, expecting `T_PAAMAYIM_NEKUDOTAYIM' in D:\wamp\www\activecollab\public\activecollab\3.0.9\modules\projectcomrequest\models\Projectcomrequests.class.php on line 130

モデルファイルで行ったコードは次のとおりです。

  class Projectrequests extends DataManager {

   ...
   ....

        function getPermissionValue($name){
            $roles = Roles::find();
            foreach($roles as $role) {
                if($role->getPermissionValue($name))
                    return true;
                else
                    return false;
        }

        static function canAccess() {
          if(self::getPermissionValue('can_use_project_request')) return true;
            return false;
        } // canAccess

  ...
  ..

  }

これによってコントローラーを呼び出す:

echo Projectrequests::canAccess();
4

3 に答える 3

5
    foreach($roles as $role) {
        if($role->getPermissionValue($name))
            return true;
        else
            return false;

そこにクロージング}がありません。したがって、次のようになります。

  class Projectrequests extends DataManager {

   ...
   ....

        function getPermissionValue($name){
            $roles = Roles::find();
            foreach($roles as $role) {
                if($role->getPermissionValue($name))
                    return true;
                else
                    return false;
            } // <-- here
        }

        static function canAccess() {
          if(self::getPermissionValue('can_use_project_request')) return true;
            return false;
        } // canAccess

  ...
  ..

  }
于 2012-05-22T12:52:18.353 に答える
3

$thisの最初の行で呼び出そうとすると、静的メソッドにはクラスコンテキストがありませんcanAccess()self::クラスコンテキストにアクセスする代わりにを呼び出す必要$this->があります。そうすると、他の静的フィールドとメソッドのみを呼び出すことができます。getPermissionValueまた、静的にする必要があります。

さらにいくつかのエラー:

  • {foreachを忘れました。これを修正しました(ループ内でtrueを返すだけです。それ以外の場合、foreachは1回だけループするため、else構文は役に立ちません)。
  • getPermissionValueとにかくブール値であるため、inへの呼び出しの値をすぐに返すことができcanAccessます(if-else構文は一種の役に立たない)。

修正されたコード:

static function getPermissionValue($name){
    $roles = Roles::find();
    foreach($roles as $role) {
        if($role->getPermissionValue($name))
            return true;
    }    
    return false;
}

static function canAccess() {
    return self::getPermissionValue('can_use_project_request');
} // canAccess

のようなアクセス修飾子を使用することもアドバイスしたいと思いますpublicprivateそれは良い習慣です。

于 2012-05-22T12:52:48.900 に答える
2
<?php
class Projectrequests extends DataManager {

   ...
   ....

        function getPermissionValue($name){
            $roles = Roles::find();
            foreach($roles as $role) {
                if($role->getPermissionValue($name))
                    return true;
                else
                    return false;
            } // <!---- YOUR ERROR IS HERE
        }

        static function canAccess() {
          if($this->getPermissionValue('can_use_project_request')) return true;
            return false;
        } // canAccess

  ...
  ..

  }

また、静的メソッドにはアクセス権がなく、代わり$thisに使用する必要がありますself::

于 2012-05-22T12:52:46.007 に答える