Версия 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.")] строка выше объявления свойства.

5
задан Svetlozar Angelov 22 December 2009 в 15:42
поделиться

5 ответов

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

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

8
ответ дан 13 December 2019 в 19:28
поделиться

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;
        }
    }
}
0
ответ дан 13 December 2019 в 19:28
поделиться

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

.
0
ответ дан 13 December 2019 в 19:28
поделиться

Нет, по крайней мере, не существует нативного фреймворка, поддерживаемого PHP.

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

.
1
ответ дан 13 December 2019 в 19:28
поделиться

В 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;
}
0
ответ дан 13 December 2019 в 19:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: