Foo*_*bar 5 php exception abstract symfony
最近我经常看到如下代码(这个例子来自Symfony):
protected function execute(InputInterface $input, OutputInterface $output)
{
throw new LogicException('You must override the execute() method in the concrete command class.');
}
Run Code Online (Sandbox Code Playgroud)
将标记方法标记为什么有什么好处abstract?
对...有什么好处?
我已经在Java中找到了一个类似的问题(伪造抽象方法在Java中使用异常),但由于它的答案是明确的猜测和观点,所以它不是很有帮助.
只有抽象类才能有抽象方法。
您无法从抽象类创建对象。
所有抽象方法都必须在非抽象类中实现。
构造示例:
想象一下以下情况:
abstract class Repository {
public abstract function read();
public abstract function write($object);
public abstract function delete($object);
public function connection() {
//this is implemented for you by the framework so you don't have to do it every time
}
Run Code Online (Sandbox Code Playgroud)
现在您想要实现一个用于记录用户操作(登录、注销等)的存储库
您不希望删除任何这些条目,并且此时您不想实现该delete功能。但你必须这样做,因为你的UserActionRepository不是抽象的,因为你实际上需要它的实例。那就是你抛出异常的时候。
| 归档时间: |
|
| 查看次数: |
118 次 |
| 最近记录: |