そこで、html要素を作成するために拡張した基本クラスを作成しました。Zend に基づいていますが、正確ではありません。いいえ、これは zend について、または zend に関連する質問ではありません
class AisisCore_Form_Elements_Input extends AisisCore_Form_Element {
protected $_html = '';
public function init(){
foreach($this->_options as $options){
$this->_html .= '<input type="text" ';
if(isset($options['id'])){
$this->_html .= 'id="'.$options['id'].'" ';
}
if(isset($options['class'])){
$this->_html .= 'class="'.$options['class'].'" ';
}
if(isset($options['attributes'])){
foreach($options['attributes'] as $attrib){
$this->_html .= $attrib;
}
}
$this->_html .= $this->_disabled;
$this->_html .= ' />';
return $this->_html;
}
}
}
したがって、このクラスは、オプションの配列を受け取るコンストラクターで構成される要素クラスを拡張し、基本的な要素は次のように設定されます。
$array_attrib = array(
'attributes' => array(
'placeholder' => 'Test'
)
);
$element = new AisisCore_Form_Elements_Input($array_attrib);
echo $element;
だから問題は何ですか?
$element オブジェクトをエコーすると、オブジェクトを文字列に変換できないというエラーが表示されるため、var_dump を実行すると、次のように返されます。
object(AisisCore_Form_Elements_Input)#21 (3) {
["_html":protected]=>
string(22) "<input type="text" />"
["_options":protected]=>
array(1) {
["attributes"]=>
array(1) {
["placeholder"]=>
string(4) "Test"
}
}
["_disabled":protected]=>
NULL
}
誰かが何が起こっているのか説明できますか? 最後に、オブジェクトではなく文字列をエコーアウトしていることを確認しました。どうやってオブジェクトを作成できましたか?
AisisCore_Form_Element クラスを確認する必要がある場合は、このクラスがすべて要素を作成するために拡張する基本クラスであっても投稿します。必要なのはオプションの配列だけです。