статические члены php не работают - PullRequest
1 голос
/ 23 января 2012

Я озадачен следующим кодом:

 <b><i>First name *</b></i> : <input type="text" 
                     name='<?php Labels::$FIRSTNAMELABEL ?>'  /><br />

Это поле «Имя» является одним из нескольких входных данных в форме на моей странице. Метки: $ FIRSTNAMELABEL устанавливается в определении класса на «FirstName».

Вот определение класса:

class Labels {
      static public $FIRSTNAMELABEL = "FirstName";
      // other static class members here for last name, phone #, etc.
      }

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

<form action="AddPerson.php" method="post">
<b><i>First name *</b></i> : <input type="text" 
                     name=''  /><br />

Вы заметите, что name = '' пусто. Это должно сказать name = "FirstName" там, в источнике страницы. Не быть пустым.

Я пробовал: одинарные кавычки, двойные кавычки, пробелы, без пробелов вокруг блока php и внутри блока php вокруг меток :: $ FIRSTNAMELABEL - без изменений. Когда форма отображается и я выгружаю исходный код страницы, я всегда получаю имя = (пусто).

Я обнаружил это с помощью следующей строки кода:

  if( isset( $_POST[Labels::$FIRSTNAMELABEL])

isset всегда возвращает false, поэтому я выполнил дамп страницы и выяснил, почему - когда форма отправляется, в ней нет поля имени с именем «FirstName».

Забавно, у меня была эта форма внутри heredoc, и она работала нормально - вот часть формы в моем heredoc:

 <?php
  // this was successfully displaying a 'name=' field on the form set to the 
  // static class label called Labels::$FIRSTNAMELABEL -- ie. the 'name' field 
  // in the page source was name="FirstName"
 function showAddContactForm()
 {
     $firstNameLabel = Labels::$FIRSTNAMELABEL;
     // other field names not shown.....

     echo <<<_END
       <form action="AddContact.php" method="post">
       <b><i>First name *</b></i> : <input type="text" name=$firstNameLabel /><br />
      // other fields on the form not shown..
      </form>
 _END;
 }
 ?>

Почему мое поле 'name =' всегда пустое?

1 Ответ

4 голосов
/ 23 января 2012

На первый взгляд, нет эхо / печати. ​​

<b><i>First name *</b></i> : <input type="text" 
name='<?php echo Labels::$FIRSTNAMELABEL ?>'  /><br />
...