Что лучший способ состоит в том, чтобы сохранить переменные класса в PHP?

Вы используете document.getElementById() для извлечения значения из формы, но вы не указали атрибут id во входных элементах.

<input type="text" id="firstName" placeholder="First Name" name="firstName" required/><br><br>
<input type="text" id="lastName" placeholder="Last Name" name="lastName" required/><br><br>
<input type="text" id="signUpUserName" placeholder="Username" name="signUpUserName" pattern="^[a-zA-Z][a-zA-Z0-9-_\.]{8,20}$" required/><br><br>
<input type="text" id="signUpPassword" placeholder="Password" name="signUpPassword" pattern="(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$" required/><br><br>
<input type="text" id="signUpVerPassword" placeholder="Verify Password" name="signUpVerPassword" pattern="(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$" required/><br><br>
10
задан Philip Morton 13 February 2009 в 15:42
поделиться

5 ответов

Обычно первое лучше по причинам, которые другие люди уже заявили здесь.

Однако, если необходимо хранить данные на классе конфиденциально, но место элементов данных неизвестно, Вы будете часто видеть, что Ваш 2-й пример, объединенный с __, добирается () __, набор () сцепляется для сокрытия этого, они хранятся конфиденциально.

class someThing {

    private $data = array();

    public function __get( $property )
    {
        if ( isset( $this->data[$property] ) )
        {
            return $this->data[$property];
        }
        return null;
    }

    public function __set( $property, $value )
    {
        $this->data[$property] = $value;
    }
}

Затем объекты этого класса могут использоваться как экземпляр stdClass, только ни один из участников, которых Вы устанавливаете, на самом деле общедоступны

$o = new someThing()
$o->cow = 'moo';
$o->dog = 'woof';
// etc

Эта техника имеет свое использование, но знать, что __ добираются () и __, набор () находится на порядке в 10-12 раз медленнее, чем установка общественных собственностей непосредственно.

12
ответ дан 3 December 2019 в 19:35
поделиться

Если код является повторяющимся, массивы и (foreach) циклы убирают вещи. Необходимо решить, является ли понятие "животных" в коде повторяющимся или нет, или если код должен закопать к уникальности каждого участника.

Если я должен повторить меня несколько раз, я циклично выполняюсь.

1
ответ дан 3 December 2019 в 19:35
поделиться

Если Вы используете private $data; Вы только что получили непроницаемый блоб данных там... Явно утверждение их сделает Вашу жизнь намного легче, если Вы выясните, как работает класс.

Другое соображение состоит в том при использовании IDE с автоматическим заполнением - это не собирается работать с 2-м методом.

6
ответ дан 3 December 2019 в 19:35
поделиться
  • Используйте первый метод, когда Вы знаете о необходимости в той переменной.
  • Используйте второй метод (набор массива переменных), когда у Вас будут потребности динамической переменной.

Можно объединить эти 2 метода, таким образом, некоторые переменные являются hardcoded в класс, в то время как другие являются динамичными. hardcoded переменные будут иметь предпочтение по сравнению с волшебными методами.

1
ответ дан 3 December 2019 в 19:35
поделиться

Я предпочитаю первый метод по нескольким причинам:

В хорошем IDE обнаруживаются свойства класса, даже если частный/защищающий легче видеть то, что было уже определено, уменьшив шанс, Вы храните ту же информацию дважды. Если общеизвестная шина поражает Вас по дороге домой, намного более просто для другого разработчика войти и прочитать Ваш код. И в то время как это не относится к частному var, это делает в защищенный Вар в классах, которые расширяют этот класс, действительно необходимо стараться избегать второго метода для чистой удобочитаемости.

Кроме того, как примечание стороны, я почти всегда выбираю защищенный по частному, если у меня нет очень определенной причины сделать его частным.

Единственное время я, вероятно, использовал бы второй метод, было то, если я хранил набор многих из одного вида вещи.

0
ответ дан 3 December 2019 в 19:35
поделиться
Другие вопросы по тегам:

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