我正在使用Vzaar的PHP库将从我的网站上传视频到他们的服务器空间。 现在的问题是 - 在他们的库中有一些PHP文件,其中存在多个类,并且同一文件中不存在具有相同文件名的类。 例如,请查看OAuth.php,该文件中没有名称为OAuth的类。 我的问题是: 当我创建任何PHP类文件时,我可以在一个文件中创建多个类,然后稍后我可以在我的代码中使用该文件,或者我也可以在其他项目中使用可重用的代码。 创建这样的文件是好的做法吗? 如果类长度为15至20行,则我应该创建单独的文件还是应该将其包含在一个文件中,如OAuth.php。 请用确切的原因指导,如果我能得到维基链接,说明得当,那就最好了。
通常情况下,在一个文件中放置多个类是一种不好的做法,而在Symfony2中更是如此,因为类自动加载器的工作方式。当自动加载器正在寻找Acme\DemoBundle\SomeClass类时,它期望它将在Acme\DemoBundle\SomeClass.php文件中。因此,如果您在同一个文件中有第二个类,它将无法正常工作。还要检查PSR类自动加载标准。
尽管我不太喜欢在一个文件中定义多个类,但我想指出,如果类的范围是private,那么PSR-4并不反对这种做法。引用Symfony2编码标准资源(http://symfony.com/doc/current/contributing/code/standards.html)定义一个文件只有一个类 - 这不适用于私有helper类,因为它们不打算从外部实例化,因此不涉及PSR-0和PSR-4自动加载标准;在这个示例中(感谢Xavi Montero),您可以看到类Psr4AutoloaderClassTest在同一文件中定义了一个helper类MockPsr4AutoloaderClass。所以一般情况下不应该这样做,但对于“私有helper”,这是可以接受的。 https://www.php-fig.org/psr/psr-4/examples