Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CodeIgniter静态类问题_Php_Codeigniter_Static_Singleton - Fatal编程技术网

Php CodeIgniter静态类问题

Php CodeIgniter静态类问题,php,codeigniter,static,singleton,Php,Codeigniter,Static,Singleton,如果我想在我的模型中有几个静态方法,那么我可以说User::get\u registered\u users(),并让它执行类似的操作 public static function get_registered_users() { $sql = "SELECT * FROM `users` WHERE `is_registered` = 0"; $this->db->query($sql); // etc... } 是否可以访问$this->db对象或为静态

如果我想在我的模型中有几个静态方法,那么我可以说
User::get\u registered\u users()
,并让它执行类似的操作

public static function get_registered_users()
{
    $sql = "SELECT * FROM `users` WHERE `is_registered` = 0";
    $this->db->query($sql);
    // etc...
}

是否可以访问
$this->db
对象或为静态方法创建一个新对象?

Matt S是正确的,尽管Kohana是为PHP5构建的,因此以前的兼容性不是什么大问题

静态方法不能访问其他变量。如果变量被定义为self::db,那么您可以使用它,并且您可能希望以这种方式实例化它


静态方法最适合于不需要对象的事情,例如格式化文本、重定向页面等。

Matt S是正确的,尽管Kohana是为PHP5构建的,所以以前的兼容性不是什么大问题

静态方法不能访问其他变量。如果变量被定义为self::db,那么您可以使用它,并且您可能希望以这种方式实例化它

静态方法最适合于不需要对象的事情,例如格式化文本、重定向页面等。

很简单:

get\u instance()->db…

$CI =& get_instance();
$CI->db->get('users')->result();
$CI->session->set_userdata('login', TRUE);

很简单:

get\u instance()->db…

$CI =& get_instance();
$CI->db->get('users')->result();
$CI->session->set_userdata('login', TRUE);

由于各种原因,许多框架不使用静态方法。其中最重要的是后期静态绑定,它在PHP5.3中提供,但之前没有。您将无法在静态方法中使用
$this
,您必须实例化一个新的db实例并对其调用query。@马特:正确,我该怎么做?许多框架由于各种原因不使用静态方法。其中最重要的是后期静态绑定,它在PHP5.3中提供,但之前没有。您将无法在静态方法中使用
$this
,您必须实例化一个新的db实例并对其调用query。@马特:正确,我该怎么做?在向OP源代码发布建议时,实际使用OP源代码并对其进行更改会很有帮助。会很有帮助,在向OP源代码发布建议时,请实际使用OP源代码并对其进行更改。