Heim > php教程 > PHP开发 > Kenntnisse in der Programmierung von PHP-Komponenten

Kenntnisse in der Programmierung von PHP-Komponenten

黄舟
Freigeben: 2016-12-14 13:09:28
Original
1116 Leute haben es durchsucht

Aber es ist in Bezug auf die Benutzeroberfläche etwas unzureichend. Nicht nur PHP, sondern jede Web-Programmiersprache hat ähnliche Probleme beim Entwerfen der Benutzeroberfläche. Die Host-Sprache und HTML sind in einer Datei gemischt, mit einer großen Anzahl wiederholter HTML-Codes. ohne technischen Inhalt, aber sehr zeit- und arbeitsintensiv. Daher hoffe ich, dass ich den UI-Teil des PHP-Projekts, den ich zuvor erstellt habe, zusammenfassen und zusammenfassen, ihn in kleine Komponenten kapseln kann (genau wie die Komponenten in Delphi) und sie in einem einheitlichen Stil auf der Benutzeroberfläche präsentieren kann, sodass ich Sie können sie in Zukunft erneut verwenden. Schreiben Sie mehrere CSS-Dateien für diese Knotenkomponente, um die „Skinning“-Funktion bereitzustellen.

Alle Komponenten erben von der Klasse AbatractComponent und implementieren deren Methoden toString() und render(). AbatractComponent verfügt über drei Hauptunterklassen. Die eine ist die Containerklasse Continer, die wiederum Klassen wie Panel, PopPanel und GroupPanel ableitet. Die zweite ist die Steuerklasse Control, die die übergeordnete Klasse aller visuellen Steuerklassen ist, z. B. Button und LinkButton usw. Klasse, und die dritte ist die Listenklasse List, die eine Benutzeroberfläche mit Listen und Name-Wert-Paaren implementiert.

AbstractComponent部分代码:
/** 
* Komponentenbibliothek 

* @author Chris Mao 
* @package Component 
* @description Alle Komponenten müssen aus der Klasse erweitert werden 
* und überschreiben beide Methoden von toString . 
* @copyright Copyright (c) 2009 JueRui Soft Studio 

**/ 
class AbstractComponent { 

/* 
* @var _style das Array des Komponentenstils

* @access protected 

*/ 
protected $_style = array(); 
/* 
* @var _attributes die Zeichenfolge des Komponentenattributs 

* @access protected 

*/ 
protected $_attributes = array(); 

/** 
* Konstruktorfunktion 

* @access public 

*/ 
public function __construct($options = null, $style = null) { 
if (!is_null($options) && (gettype($options) != "array")) { 
throw new Exception("Die Optionen müssen ein Array sein!!"); 

if (!empty($options) && is_array($options)) { 
if (array_key_exists("style", $options)) { 
if (is_array($options[" style"])) { 
$this->_style = array_merge($this->_style, $options["style"]); 

unset($options["style"]); 

$this->_attributes = array_merge($this->_attributes, $options); 

if (!empty($style) && is_array($style)) { 
$this->_style = array_merge($this->_style, $style); 



/** 
* Komponentenattribute festlegen 

* @access protected 

* @param $name Attributname 
* @param $value Attributwert, Option 

* @return AbstractComponent 
*/ 
protected function setAttr($name, $value) { 
if (array_key_exists($name, $this-> ;_attributes)) { 
unset($this->_attributes[$name]); 

$this->_attributes[$name] = $value; 
$this zurückgeben; 


/** 
* Wert der Komponentenattribute abrufen 

* @access protected 

* @param $name Attributname 

* @return string 
*/ 
protected function getAttr($name) { 
return array_key_exists($name, $this->_attributes) ? $this->_attributes[$name] : null; 


/** 
* Komponentenstil festlegen 

* @access protected 

* @param $name Stilname 
* @param $value Stilwert, Option 

* @return AbstractComponent 
*/ 
protected function setStyle($name, $value) { 
if (array_key_exists($name, $this->_style)) { 
unset($this->_style[$name]); 

$this->_style[$name] = $value; 
$this zurückgeben; 


/** 
* den Wert des Komponentenstils abrufen 

* @access protected 

* @param $name Attributname 

* @return string 
*/ 
protected function getStyle($name) { 
return array_key_exists($name, $this->_style) ? $this->_style[$name] : null; 


/** 
* Konvertieren Sie alle Attribute der Komponente in einen String wie name = "value" 

* @access protected 

* @return string 
*/ 
protected function attributeToString() { 
//$s = array_reduce(; 
$s = ""; 
foreach($this->_attributes as $key => $value) { 
$s .= " $key="$value" "; 

return $s; 

/** 
* Konvertieren Sie den Komponentenstil in einen String wie style = "....." 

* @access protected 

* @return string 
*/ 
protected function styleToString() { 
if (empty($this->_style)) return ""; 
$s = "" ; 
foreach($this->_style as $key => $value) { 
$s .= " $key: $value; "; 

$s = " style ="$s" "; 
return $s; 


/** 
* Komponentenattribute festlegen oder abrufen 

* @access public 

* @param $name Attributname 
* @param $value Attributwert, Option 

* @return string || AbstractComponent 
*/ 
public function attr() { 
$name = func_get_arg(0 ); 
if (func_num_args() == 1) { 
return $this->getAttr($name); 

else if (func_num_args() == 2) { 
$value = func_get_arg(1); 
return $this->setAttr($name, $value); 



/** 
* Komponentenstil festlegen oder abrufen 

* @access public 

* @param $name Stilname 
* @param $value Stilwert, Option 

* @return string || AbstractComponent 
*/ 
public function style() { 
$name = func_get_arg(0); 
if (func_num_args() == 1) { 
return $this->getStyle($name); 

else if (func_num_args() == 2) { 
$value = func_get_arg(1); 
return $this->setStyle($name, $value); 



/** 
* gibt den HTML-String zurück 

* @access public 

* @return string 
**/ 
public function toString() { 
thorw New AbstractException("subclass must be override this method!!"); 


/** 
* Komponente rendern 

* @access public 

* @return void 
**/ 
public function render() { 
echo $this->toString(); 

}

更多相关内容请关注PHP中文网(m.sbmmt.com)!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage