取出类里面的变量问题

dhc_1229 2011-11-30 02:09:57
类名问题:
第一个类里面的方法: 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变量?
...全文
118 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ci1699 2011-11-30
  • 打赏
  • 举报
回复
get_class_methods
get_class_vars

get_defined_vars
get_defined_functions

都忘记了用这些函数了。。

不知道还有没有类似这样的方法。
foolbirdflyfirst 2011-11-30
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 dhc_1229 的回复:]

引用 6 楼 ci1699 的回复:

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

引用 5 楼 foolbirdflyfirst 的回复:

php无耻强大的特征之一便是其变态的弱类型+灵活的语法解析,这一看就知道是没问题的。

PHP code
class a{public static $rules = "aaa";}
function getRu……
[/Quote]
呀,没看到。发水了
foolbirdflyfirst 2011-11-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ci1699 的回复:]

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

引用 5 楼 foolbirdflyfirst 的回复:

php无耻强大的特征之一便是其变态的弱类型+灵活的语法解析,这一看就知道是没问题的。

PHP code
class a{public static $rules = "aaa";}
function getRule($class){return $cla……
[/Quote]
确实是,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
?>







dhc_1229 2011-11-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ci1699 的回复:]

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

引用 5 楼 foolbirdflyfirst 的回复:

php无耻强大的特征之一便是其变态的弱类型+灵活的语法解析,这一看就知道是没问题的。

PHP code
class a{public static $rules = "aaa";}
function getRule($class){return $cla……
[/Quote]

恩,应该是版本的问题;
我现在的解决方法是:用了get_class_vars("Model_user")这个方法提取出Model_user类的所有属性;
kyzy_yy_pm 2011-11-30
  • 打赏
  • 举报
回复
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
ci1699 2011-11-30
  • 打赏
  • 举报
回复
PHP Version 5.2.3不支持。
可能5.3支持。

[Quote=引用 5 楼 foolbirdflyfirst 的回复:]

php无耻强大的特征之一便是其变态的弱类型+灵活的语法解析,这一看就知道是没问题的。

PHP code
class a{public static $rules = "aaa";}
function getRule($class){return $class::$rules;}
echo getRule("a");//aaa
[/Quote]
foolbirdflyfirst 2011-11-30
  • 打赏
  • 举报
回复
php无耻强大的特征之一便是其变态的弱类型+灵活的语法解析,这一看就知道是没问题的。

class a{public static $rules = "aaa";}
function getRule($class){return $class::$rules;}
echo getRule("a");//aaa

  • 打赏
  • 举报
回复
你可以在在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();
}
}




ci1699 2011-11-30
  • 打赏
  • 举报
回复
确实是错误的啊。
传过去是字符串了。


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。
xuzuning 2011-11-30
  • 打赏
  • 举报
回复
谁说是错误的?

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



ci1699 2011-11-30
  • 打赏
  • 举报
回复
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('', '');

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧