我想更多地了解static
。如果我的课程中有一些静态函数:
<?php
class Input {
public function exists($type = 'post') {
switch($type) {
case 'post':
return (!empty($_POST)) ? true : false;
break;
case 'get':
return (!empty($_GET)) ? true : false;
break;
default:
return false;
break;
}
}
public static function get($item) {
if(isset($_POST[$item])) {
return $_POST[$item];
} else if(isset($_GET[$item])) {
return $_GET[$item];
}
return '';
}
}
和spl_autoload_register
我可以使用Input :: get($ item)访问函数;使用非静态函数时,我需要使用$input = new Input();
对其进行实例化,然后可以使用$ input-&gt; exists();
所以,我没有区别。我可以从static
方法查询数据库吗? __constructor
有效吗?
我无法在网上找到任何明确的答案。
答案 0 :(得分:0)
当它们不依赖于任何特定对象实例的属性时,可以使用静态方法。当需要引用对象的属性时,可以使用非静态方法。
您可以从任何类型的方法查询数据库。选择取决于您的课程设计方式。例如,如果您设计类以使每个对象可以具有不同的数据库连接属性,则需要使用非静态方法来查询数据库,以便它将使用该对象的连接。但是,如果连接是类的静态属性,则可以在静态方法中执行。