php静态类成员无法正常工作

时间:2012-01-22 22:50:05

标签: php heredoc

我对以下代码感到难过:

 <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块周围没有空格,以及围绕Labels :: $ FIRSTNAMELABEL的php块内 - 没有变化。当显示表单并且我转储页面源时,我总是得到name =(空白)。

我用以下代码行发现了这个:

  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 个答案:

答案 0 :(得分:4)

一目了然,没有回音/打印。

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