在类对象中创建静态成员并为特定函数调用该成员是一个好主意吗?喜欢:
class Users
{
public static Login(strUsername, strPassword)
{
$objThis = new Users();
....
}
}
并称之为:
Users::Login('admin', 'admin');
或第二种方法:
class Users
{
public Login(strUsername, strPassword)
{
//$objThis = new Users();
....
}
}
并称之为:
$objThis = new Users();
$objThis->Login('admin','admin');
答案 0 :(得分:1)
如果要限制对类的访问,并且不允许实例化它,则第一种方法可能很有用。例如:
class Users {
private function __construct($strUsername, $strPassword) {
// this class can now not be instantiated
// except within itself
}
public static Login($strUsername, $strPassword)
{
return new self($strUsername, $strPassword);
}
}
这会强制您的类的用户始终使用静态方法来获取User对象,如果您总是想限制其使用方式,这可能是理想的。
一如既往,它在很大程度上取决于你想做什么。 static
就像一个工具,当它适合手头的工作时,你可以使用它。
答案 1 :(得分:1)
时使用这些功能
答案 2 :(得分:0)
通常应避免使用静态方法 - 它们会使API和重构复杂化。当初始化可能抛出异常(从文件读取等)和私有实用程序方法时,我只使用静态方法作为类构造函数的替代。