Вы видите это нарушение?любые проблемы?простое заявление php if elseif - PullRequest
1 голос
/ 20 октября 2011

Я абсолютный новичок в PHP, поэтому, возможно, есть лучший способ вывода класса строки на основе различных переменных.

Это плохо, и если это так, то почему?

    if ($variable1 > 0 && $variable2 != 2)  {
        echo "<tr class='variable1'>";
        }
        elseif ($variable2==2)
        {
         echo "<tr class='variable2'>";
        }
        else {
              echo "<tr>";
                 }

Ответы [ 7 ]

1 голос
/ 20 октября 2011

Код php синтаксически правильный, хотя отступы, похоже, испорчены. Выводимый HTML-код недопустим, поскольку значения атрибутов должны быть заключены в двойные, а не в одинарные кавычки.

Я бы также предложил небольшое изменение порядка:

if ($variable2 == 2) {
    echo '<tr class="variable2">';
} elseif ($variable1 > 0)  {
    echo '<tr class="variable1">';
} else {
    echo '<tr>';
}
1 голос
/ 20 октября 2011

Сначала вы можете поставить if ($variable2==2), а затем вам не нужно будет отрицать его в другом операторе if. Как это:

if ($variable2==2){
    echo '<tr class="variable1">';
}elseif ($variable1 > 0)  {
    echo '<tr class="variable2">';
}else {
    echo '<tr>';
}

Выглядит хорошо для меня, хотя, но это действительно зависит от остальной части кода, вы могли бы немного изменить код, чтобы его было легче читать, но это выглядит довольно просто, поэтому, если он работает, я бы сохранил это как оно есть.

0 голосов
/ 20 октября 2011

Что ж, это действительно неудачный подход на многих уровнях, но я могу вам сказать, что даже я начал писать код, как вы описываете, только это было более 12 лет назад.

Я также могу сказать вам, что в конечном итоге смешивание php с разметкой в ​​одних и тех же файлах укусит вас сзади, и раньше, чем вы думаете. Как и в большинстве вещей в жизни, делать это быстрее и беспокоиться об остальном позже - плохой подход при разработке на PHP.

Несколько указателей:

  • ОЧЕНЬ старайтесь не смешивать PHP и HTML или другую разметку в одном файле. Выполнение этого будет более трудоемким при первой разработке, но ОЧЕНЬ менее трудоемким при изменении и поддержке вашего кода позже.
  • PHP является объектно-ориентированным языком. Узнайте, как использовать это в ваших интересах. Создайте библиотеки ваших собственных классов для последующего повторного использования.
  • Используйте хороший редактор / IDE, такой как NetBeans или Komode Editor, - которые бесплатны.
  • Лучшим источником информации о PHP является онлайн-руководство по PHP. Не только справочные страницы хороши, но и фрагменты кода, которые вносят пользователи, полны маленьких жемчужин - и некоторых явных ошибок n00b, но вы научитесь фильтровать это.
  • Если вы новичок в программировании в целом, ПОЖАЛУЙСТА, сделайте себе одолжение и получите книгу по программированию. PHP - очень прощающий язык, и он позволяет вам избежать множества плохих практик. Как я уже сказал, те рано или поздно вернутся за тобой.
  • После того, как вы приобретете некоторый опыт, подумайте об использовании PHP-фреймворка, такого как CodeIgniter, CakePHP или ZendFramework. Попробуйте несколько из них и выберите тот, который подходит вам.
  • Не слушайте людей, которые говорят вам, что PHP - отстой. PHP - самый мощный язык программирования, который я использовал, за исключением C и Prolog. Массив PHP - самая мощная структура данных, с которой я сталкивался на любом языке - кроме связанных списков в C; -)
  • Вы МОЖЕТЕ использовать PHP для любых задач программирования, включая серверные приложения Windows и Linux и полнофункциональные графические приложения для настольных компьютеров. На самом деле, по моему опыту, PHP быстрее, чем любой другой динамический язык, с которым я сравнил - python, perl, ruby, tcl все работают медленнее, чем PHP. Но не верьте мне на слово, попробуйте сами: -)

Пара ссылок:

30 + PHP лучшие практики для начинающих

Плохие методы программирования на PHP

PHP ООП в полном объеме

Руководство по PHP

0 голосов
/ 20 октября 2011

2 правил для вас, чтобы научиться программировать:

.1.СУХОЙ: Не повторяйте себя.

Если ваш tr-тег набран 3 раза, вы можете точно сказать, что это неправильно.

.2.Отделите бизнес-логику от логики представления.Используйте шаблоны для вывода.Сначала подготовьте данные и начните вывод, только если все готово.

Итак, сначала вы должны определить свои переменные

if ($variable2 == 2){
    $class = "variable1";
}elseif ($variable1 > 0)  {
    $class = "variable2";
}else {
    $class = "";
}

, затем вы должны включить шаблон и написать собственный HTMLс как можно меньшим количеством PHP:

<tr class="<?=$class?>">
0 голосов
/ 20 октября 2011

Я бы написал так:

$class_name = '';
if (2 == $variable2)
{
    $class_name = 'variable2';
}
elseif ($variable1 > 0)
{
    $class_name = 'variable1';
}
echo '<tr class="' , $class_name , '">';

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

Другое дело, что я присваиваю начальное значение $ class_name, и оно будет значением по умолчанию

также я использую апострофы вместо кавычек, потому что это быстрее (потому что, как вы это сделали, php будет анализировать строку для переменных)

и последнее, что я повторяю несколько строк ... это также быстрее, чем объединение 3 строк (

echo '<tr class="' , $class_name , '">'; 

а не эхо

'<tr class="' . $class_name . '">';

)

0 голосов
/ 20 октября 2011
echo ( ( $variable1 > 0 ) && ( $variable2 != 2 ) )
    ? "<tr class='variable1'>"
    : ( $variable2 == 2 )
        ? "<tr class='variable2'>"
        : "<tr>";
0 голосов
/ 20 октября 2011

Ну, вы могли бы начать с

if ($variable2==2)

, который спас бы вас от $ variable2! = 2, если вы продолжите с

elseif ($variable1 > 0)

, но обычно я не вижу ошибки.Конечно, это зависит от того, что еще вы хотите сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...