基于类的构造函数。创建或销毁新方法。 我经常要求基于构造来禁用或销毁类中的方法。 任何人都可以帮助我吗?
class Test
{
function __construct(userID)
{
if(!isValidUser($userID))
{ destroy(methods); }
}
function addPost()
{
}
}
一旦召唤毁灭。应销毁方法或选定的方法
希望你能理解这一次。
答案 0 :(得分:3)
您可以使用工厂模式来创建类的子类的实例。每个子类都有它需要的方法。超类只有每个子类需要的方法。
class User
{
function foo(){}
function foo1(){}
static function constructUser()
{
if(self::isValidUser())
{
return new ValidUser();
}
else
{
return new User();
}
}
static function isValidUser()
{
//...
}
}
class ValidUser extends User
{
function addItem(){}
}
$user = User::constructUser();
答案 1 :(得分:1)
我觉得你需要Factory模式:一个对象(或函数),根据它的参数创建不同类型的对象。
因为在定义不同的方法集时,您真正要做的是根据用户创建另一种类型的对象:AuthenticatedUser
对象与NonAuthenticatedUser
。
使用ClassX的构造函数确实不是一个好方法。
class User { // with common methods
}
class ValidUser extends User {
function onlyForValid() {}
}
class InvalidUser extends User {
function onlyForInvalid() {}
}
function createObject( $id ){
if( isValidUser( $id ) ) return new ValidUser( $id );
else return new InvalidUser( $id );
}
答案 2 :(得分:0)
无法在PHP中禁用或销毁函数。但是,你可以从另一端接近这一点。也就是说,只在构造函数中创建适当的函数(即使用create_function())。或者,您可以使用超类并使用仅扩展子类所需函数的子类来扩展它。如果您想进一步说明,我可以为您发布一个示例。