命名空间接口

问题描述 投票:0回答:3

我有结构:

/VBAL/
/VBAL/Interface/
/VBAL/Interface/Named.php
....
/VBAL/Component.php

组件.php:

namespace JV\VBAL; 
class Component implements \JV\VBAL\Interface\Named {}

命名.php:

namespace JV\VBAL\Interface;
interface Named {}

但是我遇到了解析错误:

解析错误:语法错误,意外的“{”,期望 T_STRING 或 T_NAMESPACE 或 T_NS_SEPARATOR

如何将目录称为“命名空间”,或者放置文件?

php namespaces
3个回答
17
投票

Interface
是PHP中的保留字。您不能将其用作命名空间的一部分。


1
投票

如前所述,

Interface
是保留字,不能用作命名空间的一部分。

两个不错的选择是:

Base
- 您可以在其中存储许多从中扩展的基类,例如接口、抽象类、特征

Interfaces
,但在我看来,这个用得很少,因为它是复数形式


0
投票

从 php8 开始,保留关键字(例如

Interface
Trait
)可以用作命名空间的一部分。

<?php

namespace App\Entity\Interface;

interface FooInterface
{

}

https://wiki.php.net/rfc/namespaced_names_as_token

© www.soinside.com 2019 - 2024. All rights reserved.