2014-03-05 102 views
0

我想知道更多关于static的技巧。如果我得到了我的类中有一些静态函数:php静态函数,查询数据库

<?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 = new Input();然后可以通过使用$ input-> exists()来访问函数。

所以,我没有得到区别。我可以从static方法查询数据库吗? __constructor是否工作?

我无法找到任何明确的答案在线。

+0

不知道你真的在这里问什么。如果你不知道什么静态手段和它有什么影响,那么阅读手册中的内容:http://www.php.net/manual/en/language.oop5.static.php – CBroe

+0

这是真的基本和太广泛的话题在这里得到解答。你应该阅读一些文档。如果您仍然有问题,那么http://programmers.stackexchange.com/更合适。 – DanMan

回答

0

当它们不依赖于任何特定对象实例的属性时,可以使用静态方法。当他们需要引用对象的属性时使用非静态方法。

您可以从任何类型的方法查询数据库。选择取决于你的班级设计的方式。例如,如果设计类以便每个对象可以具有不同的数据库连接属性,则需要使用非静态方法来查询数据库,以便它使用该对象的连接。但是,如果连接是类的静态属性,则可以使用静态方法进行。