Есть ли простой способ подражать дружбе в php 5.3? - PullRequest
3 голосов
/ 30 мая 2010

Мне нужны некоторые классы, чтобы подружиться с другими классами в моей системе. Отсутствие этой функции заставило меня опубликовать некоторые методы, которые не должны быть публичными. Следствием этого является то, что члены моей команды плохо и безобразно реализуют код, что приводит к путанице.

Есть ли способ определить дружбу в php 5.3?

(мне известно о http://bugs.php.net/bug.php?id=34044 Вы можете проголосовать там, если нет простого решения).

Ответы [ 3 ]

3 голосов
/ 24 апреля 2011

Я искал ту же функциональность и смог реализовать решение. Чтобы использовать его, просто наследуйте от класса Friendship и укажите классы, которые являются друзьями вашего производного класса. Вы можете найти его здесь: http://rommelsantor.com/clog/2011/04/23/php-5-3-class-friendship-support

0 голосов
/ 30 мая 2010

Короче, нет. Общепринятым подходом является либо обучение вашей команды тому, как развиваться в сравнении с вашими библиотеками, либо редизайн. Первое решение может быть сделано довольно легко, создавая документы с помощью phpdoc и устанавливая видимость в комментариях docbloc с помощью @visibility, и, конечно, фактически документируя классы. Во-вторых, я не смог бы прокомментировать, не зная немного больше деталей.

/**
 * 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();
  }
}
0 голосов
/ 30 мая 2010

Я не уверен, что вы подразумеваете под "подружиться". Вы можете использовать абстрактные классы, в которых любой новый класс может «реализовать» этот класс. Либо вы можете сделать так, чтобы классы расширяли другие классы и делали методы, переменные и т. Д. «Защищенными», а не общедоступными или приватными.

Если ваша команда реализует какой-либо код «плохим и безобразным образом», то у вас могут быть большие проблемы.

...