我需要一些课程来与我系统中的其他课程交朋友。缺少此功能使我公开了一些不应该公开的方法。其后果是我的团队成员以一种糟糕且丑陋的方式实现代码,从而导致混乱。
有没有办法在 php 5.3 中定义友谊?
(我知道http://bugs.php.net/bug.php?id=34044如果没有简单的解决方案,您可能想在那里投票)。
我需要一些课程来与我系统中的其他课程交朋友。缺少此功能使我公开了一些不应该公开的方法。其后果是我的团队成员以一种糟糕且丑陋的方式实现代码,从而导致混乱。
有没有办法在 php 5.3 中定义友谊?
(我知道http://bugs.php.net/bug.php?id=34044如果没有简单的解决方案,您可能想在那里投票)。
我正在寻找相同的功能并且能够实施解决方案。要使用它,只需从类 Friendship 派生并指定作为派生类朋友的类。你可以在这里找到它:http ://rommelsantor.com/clog/2011/04/23/php-5-3-class-friendship-support
简而言之,没有。普遍接受的方法是教育您的团队如何针对您的库进行开发或重新设计。第一个解决方案可以通过使用 phpdoc 构建文档并使用 @visibility 在 docbloc 注释中设置可见性,当然还可以实际记录类来轻松完成。如果不知道更多细节,我将无法评论第二个。
/**
* Some helper class for LibraryInterface
*
* ATTENTION!
* This class should not be used outside this package.
*
* @visibility package
* @package mypackage
*/
class Helper
{
public function doStuff()
{
/* does stuff */
}
}
/**
* Class for accessing some part of the library.
*
* @visibility public
* @package mypackage
*/
class LibraryInterface
{
public function doStuff()
{
$this->helper->doStuff();
}
}
我不确定你所说的“成为朋友”是什么意思。您可以使用抽象类,其中任何新类都可以“实现”该类。或者您可以让类扩展其他类并使方法、变量等“受保护”,而不是公共或私有。
如果您的团队“以糟糕和丑陋的方式”实现任何代码,那么您可能会遇到更大的问题。