lukasz93p / class-visibility
PHP的私有和受保护类。
1.1.1
2021-07-30 12:34 UTC
Requires
- php: ^8.0
- haydenpierce/class-finder: ^0.4.3
- symfony/console: ^5.2
Requires (Dev)
- phpunit/phpunit: ^9.5
- roave/security-advisories: dev-master
README
PHP的私有和受保护类。
来自一些强类型语言的私有和受保护类有助于保持更干净的依赖关系并促进良好的代码组织。
私有类
私有类只能由同一命名空间内定义的类使用。例如,类 SomeNamespace\Abc\SomeClassName
可以被 SomeNamespace\Abc\OtherClass
使用,但不能被 不能 被 SomeNamespace\Abc\NestedNamespace\SomeClassFromNestedNamespace
使用,并且不能被 SomeNamespace\Abc
命名空间外的任何类使用。
受保护类
受保护类在Java中的工作方式略有不同。受保护类可以在同一命名空间内使用,就像私有类一样,但它也可以被嵌套命名空间中的类使用。例如,类 SomeNamespace\Abc\SomeClassName
可以被 SomeNamespace\Abc\OtherClass
和 SomeNamespace\Abc\NestedNamespace\SomeClassFromNestedNamespace
使用。
声明可见性
要声明类的可见性,只需添加属性即可。
use Lukasz93P\ClassVisibility\Visibility\Visibilities\PrivateVisibility; #[PrivateVisibility(self::class)] class ClassWithPrivateVisibility { }
use Lukasz93P\ClassVisibility\Visibility\Visibilities\ProtectedVisibility; #[ProtectedVisibility(self::class)] class ClassWithProtectedVisibility { }
未定义可见性属性的类被认为是公共的。
检查违规
要检查给定的命名空间是否违反了可见性规则,请运行
vendor/bin/class-visibility check <namespace to check>
或
vendor/bin/class-visibility check <namespace to check>,<another namespace>,<next namespace>