类名问题:
第一个类里面的方法:    public function action_accountAdd(){
                    $post = Controller_checkpost::check($post,"Model_user");
                         }第二个类:class Controller_Checkpost
          {
          public static function check($posts,$m)
             {
  $rules =$m::$rules;         //这种写法是错误的
             }
           }
第三个类: class Model_user
           {
              public static $rules = "aaa";
            } 请问我在第二类里面的check方法里怎么取出第三个类里面的$rules变量?

解决方案 »

  1.   

    class Controller_Checkpost
    {
      public static function check($posts,$m)
      {
       return $rules = Model_user::$rules; //这种写法是错误的
      }
    }
    class Model_user
    {
      public static $rules = "aaa";
    }  
    echo Controller_Checkpost::check('', '');
      

  2.   

    谁说是错误的?class T {
    public function action_accountAdd(){
    echo  $post = Controller_checkpost::check($post,"Model_user");
      }
    }class Controller_Checkpost
    {
      public static function check($posts,$m)
      {
       return $rules = $m::$rules; 
      }
    }
    class Model_user
    {
      public static $rules = "aaa";
    } $p = new T;
    $p->action_accountAdd();//输出 aaa 
      

  3.   

    确实是错误的啊。
    传过去是字符串了。
    class test {
     public function action_accountAdd(){
      $post = Controller_checkpost::check($post,Model_user);
      }
    }class Controller_Checkpost
    {
      public static function check($posts,$m)
      {
    var_dump($m);
    $o = new $m;
    // eval(' $rules = ' . $m . '::$rules;');  
    echo $o -> rules;  }
    }class Model_user
    {
      public  $rules = "aaa";
      // public static $rules = "aaa";
    }  $t = new test();
    $t -> action_accountAdd();暂时只想到有eval。但不安全。
    或不用static。
      

  4.   

    你可以在在class Model_user中增加一个静态方法class Model_user
    {
      public static $rules = "aaa";
    }   static function getRules() 

    return self::$rules; 

    };
    //然后在第二个类中调用
    //第二个类:
    class Controller_Checkpost
      {
      public static function check($posts,$m)
      {
      $rules =Model_user::getRules();  
      }
      }
      

  5.   

    php无耻强大的特征之一便是其变态的弱类型+灵活的语法解析,这一看就知道是没问题的。class a{public static $rules = "aaa";}
    function getRule($class){return $class::$rules;}
    echo getRule("a");//aaa
      

  6.   

    PHP Version 5.2.3不支持。
    可能5.3支持。
      

  7.   

    class cls
    {
    public function action_accountAdd(){
    $post = null;
    $post = Controller_checkpost::check($post,"Model_user");
    return $post;
    }
    }class Controller_Checkpost
    {
    public static function check($posts,$m)
    {
    $rules = $m::$rules;
    return $rules;
    }
    }class Model_user
    {
    public static $rules = "aaa";
    } $cls = new cls;
    $post = $cls->action_accountAdd();
    echo $post;// 输出: aaa
      

  8.   


    恩,应该是版本的问题;
    我现在的解决方法是:用了get_class_vars("Model_user")这个方法提取出Model_user类的所有属性;
      

  9.   

    确实是,php5.3+支持,有点先入为主了。
    之前的版本可以这样
    <?php
    class cls
    {
        public function action_accountAdd(){
            $post = null;
            $post = Controller_checkpost::check($post,"Model_user");
            return $post;
        }
    }class Controller_Checkpost
    {
        public static function check($posts,$m)
        {        //$rules = $m::$rules;
            $rules   = self::getClassVar($m);
            return $rules['rules'];
        }    public static function getClassVar($class)
        {
            return get_class_vars($class);
        }
    }class Model_user
    {
        public static $rules = "aaa";
    }$cls = new cls;
    $post = $cls->action_accountAdd();
    echo $post;// 输出: aaa
    ?>
      

  10.   

    get_class_methods
    get_class_varsget_defined_vars
    get_defined_functions都忘记了用这些函数了。。不知道还有没有类似这样的方法。