问题描述
- php类中有些方法只有方法名,没写内容
-
一般都是MVC比较底层的类里会出现这种方法,搞不清楚这个事干嘛用的。是为了覆盖方法吗?还是只做定义用?public function isRegistered($userId);
解决方案
貌似前置声明,似乎可以用不用
解决方案二:
应该就是前置声明,以前从来没注意过啊
解决方案三:
那是调用库中函数的声明,不然你不能用的,还可能造成问题,
底层那个类接口文件一般是由底层去修改的,顶层不用问事
具体的实现方式,是C/C++写在库里的,不用问事,而且你也看不到
解决方案四:
不要断章取义!
abstract class a {
abstract public function isRegistered($userId);
}
抽象函数的抽象方法才可以这么写
解决方案五:
你说的应该是抽象方法,这个方法是先定义,后面再去具体实现的,相当于建房子,先把支架搭好,然后再添砖加瓦!
解决方案六:
抽象类的抽象方法吧,那是需要继承类去实现方法内容的。所以只需要声明继承的类需要实现方法的内容。
<?php
abstract class AbstractClass
{
// 强制要求子类定义这些方法
abstract protected function getValue();
abstract protected function prefixValue($prefix);
// 普通方法(非抽象方法)
public function printOut() {
print $this->getValue() . " ";
}
}
class ConcreteClass1 extends AbstractClass
{
protected function getValue() {
return "ConcreteClass1";
}
public function prefixValue($prefix) {
return "{$prefix}ConcreteClass1";
}
}
class ConcreteClass2 extends AbstractClass
{
public function getValue() {
return "ConcreteClass2";
}
public function prefixValue($prefix) {
return "{$prefix}ConcreteClass2";
}
}
$class1 = new ConcreteClass1;
$class1->printOut();
echo $class1->prefixValue('FOO_') ." ";
$class2 = new ConcreteClass2;
$class2->printOut();
echo $class2->prefixValue('FOO_') ." ";
?>
以上例程会输出:
ConcreteClass1
FOO_ConcreteClass1
ConcreteClass2
FOO_ConcreteClass2
抽象类的子类中的普通方法执行方式和其他类相同。