PHP друг / видимость пакета - PullRequest
       36

PHP друг / видимость пакета

9 голосов
/ 03 сентября 2011

Есть ли способ ограничить видимость в PHP так же, как видимость "пакета" работает в Java или, по крайней мере, видимость "друга" в C ++? Как лучше всего поддерживать большой проект ООП и не позволять кому-либо использовать какую-либо часть кода?

Я использую частную и защищенную видимость столько, сколько могу, но иногда этого недостаточно. Я знаю об этом запросе: https://bugs.php.net/bug.php?id=55331. Есть ли прогресс в реализации такой вещи в PHP? Есть ли обходной путь для защиты вашего кода (методы, переменные класса) от доступа из любого места?

Ответы [ 2 ]

8 голосов
/ 01 апреля 2014

До сегодняшнего дня не существует языковой конструкции для ограничения видимости.Но вы можете аннотировать свой класс с помощью @internal:

в phpDocumentor. Тег @internal можно использовать как аналог тега @api, указывая, что связанные структурные элементыиспользуются исключительно для внутренней работы этого программного обеспечения.

Пользователь API должен следовать этому предложению.

3 голосов
/ 03 сентября 2011

Как указано здесь :

Нет. Вы можете установить переменную после объявления пространства имен, но переменные всегда будет существовать в глобальном масштабе. Они никогда не связаны с Пространства имен. Вы можете вывести это из отсутствия какого-либо имени описания разрешения в http://www.php.net/manual/en/language.namespaces.faq.php

...