Intereting Posts
Переместить значение в массиве PHP в начало массива что является лучшим способом создания случайного идентификатора mysql с помощью PHP Контроллер нижнего колонтитула в Laravel Обрезаемая фатальная ошибка: объект класса stdClass не может быть преобразован в строку в … после попытки вставить в базу данных Zend Lucene: фатальная ошибка, максимальное время выполнения PHP PDO подготовил заявления RNCryptor AES256 соответствует PHP MCRYPT_RIJNDAEL_256 сохранить var_dump в текстовый файл Начиная с laravel на ubuntu Помощь в спам-логике Установлен ли параметр_пакеты_файла () в параметре timeout? странный json foreach получает указанное значение Как получить несколько параметров с одинаковым именем из URL-адреса в PHP и вставить все записи в таблицу Как использовать IMAP в PHP для получения содержимого тела пользователя? Почему по умолчанию строковые функции PHP не являются многобайтовыми?

PHP-версия класса атрибутов свойств ASP.NET/C#

Что-то подобное существует?

Я хотел бы сделать что-то подобное на PHP, но я не вижу, как это сделать из документов PHP:

public class User : ValidationBase { [NotNullOrEmpty(Message = "Please enter a user name.")] public string UserName { get; set; } } 

Я ищу PHP-эквивалент атрибута свойства ASP.NET/C#, который в приведенном выше примере обозначается [NotNullOrEmpty(Message = "Please enter a user name.")] Над объявлением свойства.

PHP не имеет встроенного механизма для объявления атрибутов, но можно смоделировать это поведение, используя какой-то пользовательский код. Основная идея состоит в том, чтобы поместить ваши метаданные в блок комментариев, а затем написать класс, который анализирует этот блок комментариев. Это менее удобно, чем C #, потому что вам нужно обеспечить правильное форматирование ваших атрибутов комментариев, но оно работает.

Вот пример того, как это сделать: http://web.archive.org/web/20130302084638/http://interfacelab.com/metadataattributes-in-php/

Принятый ответ Энди Уилсона ссылается на страницы, которые больше не доступны. Мне удалось добраться до самой страницы через http://web.archive.org/web/20130116184636/http://interfacelab.com/metadataattributes-in-php/, но загрузка кода, на которую ссылается автор, также является мертвой ссылкой ,

Однако с тех пор я нашел большую реализацию аннотаций PHP здесь: https://github.com/mindplay-dk/php-annotations

Единственный недостаток, который я нашел до сих пор, заключается в том, что я полагаю, что имена файлов и имена классов совпадают с тем же случаем, что и у Code Igniter, но если бы я не справился с этим, я скоро все это работал и, конечно, это ограничение не повлияет на все реализации.

Нет, нет, по крайней мере, не поддерживается со стороны PHP.

Например, вы можете использовать фреймворк, который будет обеспечивать проверку для форм. Zend Framework имеет класс Zend_Form, который позволяет указать, нужны ли поля, какой тип они должны быть, и сообщение об ошибке для отображения, если это не так.

В PHP нет такой вещи, вам нужно ее закодировать.

Немного похоже на это, я полагаю:

 public function setUserName($str) { if (empty($str)) { throw new Exception('Please enter a user name.'); } $this->userName = $str; } public function getUserName($str) { return $this->userName; } 

Я думаю, что некоторые фреймворки могут принести такую ​​функциональность, но PHP не предназначен для создания таких высокоуровневых конструкций.

php не имеет свойств или атрибутов свойств.

если вы хотите сделать что-то подобное в php, вам нужно объявить частное поле и написать общедоступные методы getter и setter и выполнить некоторую нулевую проверку в методе setter.

 class User extends ValidationBase { private $userName; public function GetUserName() { return $this->userName; } public function SetUserName($val = '') { if ($val === '') { return false; } else { $this->userName = $val; return true; } } }