2014-09-13 4 views
1

Я работаю над классом php для проверки формы, которая проверяет разные вещи, такие как пустая, длина и т. Д.Нормально ли иметь много методов в классе php?

Вот несколько методов, которые у меня есть. Как гласит название, нормально ли иметь кучу методов в классе? Просто ответа в «да» или «нет» было бы достаточно.

//Checks if is username empty 
     function validate_empty_username(){ 
      if($this->empty_username){ 
       echo "<li>Please fill username field</li>"; 
       return false; 
      } 
     } 

     //Checks if is password empty 
     function validate_empty_password(){ 
      if($this->empty_password){ 
       echo "<li>Please fill password field</li>"; 
       return false; 
      } 
     } 

     //Checks if is email empty 
     function validate_empty_email(){ 
      if($this->empty_email){ 
       echo "<li>Please fill email field</li>"; 
       return false; 
      } 
     } 

     //Check username length is short 
     function validate_username_length_min(){ 
      if($this->get_username_length < 3){ 
       echo "<li>Username provided's too short!</li>"; 
       return false; 
      } 
     } 

     //Check password length if short 
     function validate_password_length_min(){ 
      if($this->get_password_length < 5){ 
       echo "<li>Password provided's too short!</li>"; 
       return false; 
      } 
     } 

     //Check email length if short 
     function validate_email_length_min(){ 
      if($this->get_email_length < 5){ 
       echo "<li>Email provided's too short!</li>"; 
       return false; 
      } 
     } 
+0

Конечно, это касается методов, связанных с классом. –

+0

Многие из ваших методов здесь, по-видимому, очень сильно связаны, я бы, вероятно, вытащил их вместе под «чек-электронной почтой», но, сказав это, нет ничего плохого в том, что у него может быть множество вещей. – Fluffeh

+0

ey thanks @ S.pols – 1to1k

ответ

2

Это не lots ... До тех пор, как это имеет смысл, и не нарушает принципы, ты в порядке. Просто следуйте правилам программирования и ООП.

Эти методы, которые вы показали, явно несколько взаимосвязаны, и это не проблема, если вы поместите их в один класс. Я думаю, было бы намного хуже, если бы эта логика распространилась по всему исходному коду.

+0

Невозможно проголосовать, @walther Требуется 15 человек. Но спасибо за ответ:) – 1to1k

+0

@ 1to1k, не проблема, вы можете вернуться и проголосовать позже;) Кстати, если вам нужна помощь в оптимизации вашего кода, у нас есть хороший сайт для этого: http: //codereview.stackexchange. com/ – walther

0

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

Но, как правило, у вас может быть столько функций в классе, сколько вы хотите, но в конце концов вы доберетесь до точки, где у вас так много функций, что вместо простого упрощения кода вы просто делаете большой беспорядок.

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

+0

Я думаю, что я сделаю еще 3 функции и поставлю все подобные функции внутри них. Как check_email будет иметь пару функций, которые позволяют проверять check_length check_length и т. Д. Потому что atm Я вызываю методы один за другим .. Что бы я мог сделать, так это вызвать один главный метод, например check_email, а затем вызвать других (check_length .. check_empty) методы изнутри. Звучит ли это как хорошая идея, или я что-то пропустил? @ zoran404 как мне удалить свой вопрос .. люди начинают -rep все, что угодно ...нужно удалить его, прежде чем я потеряю способность размещать больше вопросов. – 1to1k

+0

Конечно, вы будете использовать их 1 на 1, но если вы всегда будете использовать их в одном порядке, тогда нет необходимости использовать несколько функций, но если вы сделаете это, Кстати, это тоже не ошибка. (и если вы хотите удалить вопрос, есть кнопка удаления в нижней части его, просто под тегами, вам это не нужно делать, поскольку у вас есть положительные моменты на нем, и вы также можете отменить сейчас) – zoran404

1

По моему опыту, вы начинаете писать свои классы, затем возвращаетесь, чтобы добавить что-то к методу, тогда вы можете расширить свой класс с помощью подобной функциональности, и, наконец, вы в конечном итоге осознаете, что он стал грязным и есть много вещей, вы можете объединиться в одну (частную) функцию, чтобы не только уменьшить длину кода, но и упростить его поддержку.

Итак, мой совет: всегда занимайте второе место, думайте о том, что вы собираетесь делать, и будет ли метод, который вы собираетесь реализовать, - это цепочка подфункций, которые сами по себе будут полезны где-то в другом месте , Постарайтесь сделать ваши функции максимально возможными, но только объявите их необходимыми как общедоступные.

+0

эй @ Роберт. Mate Я пытаюсь использовать аналогичные методы внутри функции, но когда я вызываю эту функцию, методы внутри нее не называются, что я должен делать так, чтобы при вызове функции методы внутри нее тоже вызывались? спасибо – 1to1k

+0

@ 1to1k, если вы используете вложенные функции (функции внутри функций или в ваших функциях внутри метода), и вы используете переменные/объекты типа «$ this», тогда вам нужно передать эту переменную/объект («$ this») как параметр функции внутри вашего метода, иначе функция не может быть выполнена. это, вероятно, ваша проблема. (btw «$ this» является указателем на объект) – zoran404

0

Да. До тех пор, пока методы в классе связаны, хорошо идти. И ваш очень короткий список. Вы можете использовать GUMP Validator, если хотите проверить. Это очень просто в использовании.

+0

hey @ user3107673. Mate Я пытаюсь использовать аналогичные методы внутри функции, но когда я вызываю эту функцию, методы внутри нее не называются, что я должен делать так, чтобы при вызове функции методы внутри нее тоже вызывались? спасибо – 1to1k

+0

@ 1to1k вы можете поделиться своим кодом. – user3107673

+0

здесь помощник. я изменил код в соответствии с тем, о чем я говорил. http://pastebin.com/FQM7dAux @ user3107673 – 1to1k

Смежные вопросы