Heim > Backend-Entwicklung > PHP-Tutorial > Universelles CRUD-Funktionsframework im schnellen Backend im IcePHP-Framework (5) SCrud-Hauptkontrollklasse

Universelles CRUD-Funktionsframework im schnellen Backend im IcePHP-Framework (5) SCrud-Hauptkontrollklasse

黄舟
Freigeben: 2023-03-04 11:08:01
Original
1259 Leute haben es durchsucht

/**
* CRUD-Meisterklasse
* @author bluehire
*/
class SCrud {
const PATH_VIEW='crud'; //Pfadname anzeigen

/**
* Aktuelle Listenoperationskonfiguration
* @var SCrudOperation
*/
public $operation;

/**
* Datenzugriffsobjekt
* @var STable
*/
public $model;

private $table; // Haupttabellenname
private $config; array
public $fields; //array aller Feldobjekte

public $title; //aktueller Geschäftstitel des gesamten CRUD
public $pageSize=20; //list paging size
public $pageSort='id'; //Sortierungsbasis der Liste
public $pageDir='desc'; //Sortierrichtung der Liste
public $rowNo=true; //Ob die Liste Zeilennummern anzeigt

/**
* Filtern in Listen
* @var-Abschluss
*/
public $gridFilter;

//Ob es die folgenden Operationen gibt
public $operationView=true;
public $operationInsert=true;
public $ operationUpdate=true;
public $operationDelete=true;
public $operationMultiDelete=true;

//Der Controller- und Aktionsname der aktuellen Anfrage, der für spätere Verknüpfungen mit Hyperlinks verwendet wird
private $ controller;
private $action;

/**
*
* @param unbekannt $table Haupttabellenname
* @param unbekannt $controller Controllername
* @param unbekannt $action Aktionsname
*/
public function __construct($table, $controller, $action) {
$this ->table = $table;
$this->controller = $controller;
$this->action = $action;

// Verschiedene Konfigurationsobjekte generieren
$ this-> config = config ( 'crud/' . $table );
foreach ( $this->config as $c => $v ) {
if (strpos ( $c, '_ ' ) == = 0) {
$n = substr ( $c, 1 );
$this->$n = $v;
} else {
$this-> Felder [$c ] = new SCrudField ( $this, $v );
}
}

//Titel dieser Funktion
$this->title=$this-> ;title?: $table.'Management';

//Alle Operationssätze
$this->operation = new SCrudOperationSet ( $this );

//Datenzugriffsmodell
$ this->model = table($table);
}

/**
* Nimm ein Feld
*
* @param unbekannter $name
* @return SCrudField
*/
public function field($name) {
if ( ! isset ( $ this->fields [$name] )) {
return null;
}
return $this->fields [$name];
}

/**
* Holen Sie sich den Primärschlüsselfeldnamen dieser Tabelle
* @return SCrudField
*/
public function getPrimaryField() {
// Alle Felder anzeigen
foreach ( $this->fields as $field ) {
// Der Primärschlüssel Feld muss abgefragt werden
if ($field->primaryKey) {
return $field;
}
}

return false;
}

/**
* Alle Felder abrufen, nach denen sortiert werden kann
* @return array of SCrudField
*/
public function listSortable(){
return array_filter ( $this->fields, function ($f) {
return $f->isSortable ();
} );
}

/**
* Alle durchsuchbaren Felder abrufen
* @return multitype:
*/
public function listSearchable(){
return array_filter ( $this->fields, function ($f ) {
return $ f->isSearchable ();
} );
}

/**
* Holen Sie sich die Felder aller teilnehmenden Listen
* @return multitype:
*/
public function listGridable(){
return array_filter ( $this- >fields, function ($f) {
return $f->isGridable ();
} );
}

/**
* Alle an der Anzeige beteiligten Felder abrufen
* @return multitype:
*/
public function listViewable(){
return array_filter ( $this->fields, function ($f) {
return $f->isViewable ();
} ) ;
}

/**
* Alle an der Erstellung beteiligten Felder abrufen
* @return multitype:
*/
public function listInsertable(){
return array_filter ( $this->fields, function ($f) {
return $f->isInsertable ();
} );
}

/**
* Alle an der Bearbeitung beteiligten Felder abrufen
* @return multitype:
*/
public function listUpdatable(){
return array_filter ( $ this->fields, function ($f) {
return $f->isUpdatable ();
} );
}

/**
* Alle Erstellungszeitfelder abrufen, normalerweise nur eines
* @return multitype:
*/
public function listCreated() {
return array_filter ( $this->fields, function ($field) {
return $field->isCreated;
} );
}

/**
* Alle Änderungszeitfelder abrufen, normalerweise nur eines
* @return multitype:
*/
public function listUpdated(){
return array_filter ( $this->fields, function ($field) {
return $field->isUpdated ;
} );
}

/**
* URL erstellen
*
* @param unbekannte $methode
* Der dritte Systemparameter (Name ist auf m festgelegt)
* @param unbekannte $params
* Andere Parameter
* @return string
*/
public function url($method, $params = array()) {
return STemplate:: append ( LUrl::ice ( ) . '/', array_merge ( $params, array (
'c' => $this->controller,
'a' => $this->action,
'm' => $method
) );
}

/**
* Fügen Sie eine gemeinsame Mehrfachauswahloperation hinzu
*
* @return SCrudOperationMulti
*/
öffentliche Funktion operationMulti($method) {
return $this->operation->add ( new SCrudOperationMulti ( $this, $method ) );
}

/**
* Fügen Sie eine gemeinsame einzeilige Operation hinzu
*
* @return SCrudOperationRow
*/
public function operationRow($method) {
return $this->operation->add ( new SCrudOperationRow ( $ this, $method ) );
}

/**
* Fügen Sie eine allgemeine vollständige Tabellenoperation hinzu
*
* @return SCrudOperationTable
*/
public function operationTable($method) {
return $this->operation->add ( new SCrudOperationTable ( $this, $method ) );
}

/**
* Verarbeitung von Anfragen, implementiert durch Operationsklassen
*
* @param SRequest $req
*/
public function process(SRequest $req) {
//Vor der Verarbeitung, Initialisieren Sie zunächst Felder für Suchbedingungen, Listen, Erstellung, Änderung, Anzeige und Sortierung
foreach($this->fields as $field){
if(!$field->isAbandon){
$ field->process();
}
}

//Operation festlegen
if($this->operationInsert){
$this->operation- > ;insert(new SCrudOperationTable($this,SCrudOperation::METHOD_INSERT));
$this->operation->insert(new SCrudOperation($this,SCrudOperation::METHOD_DOINSERT));
}
if($this->operationMultiDelete){
$this->operation->insert(new SCrudOperationMulti($this,SCrudOperation::METHOD_DELETEMULTI));
}
if($this- > ;operationDelete){
$this->operation->insert(new SCrudOperationRow($this,SCrudOperation::METHOD_DELETE));
}
if($this->operationUpdate){
$this->operation->insert(new SCrudOperationRow($this,SCrudOperation::METHOD_UPDATE));
$this->operation->insert(new SCrudOperation($this,SCrudOperation::METHOD_DOUPDATE ) );
}
if($this->operationView){
$this->operation->insert(new SCrudOperationRow($this,SCrudOperation::METHOD_VIEW));
}

//Übertragung zur Operationsklassenverarbeitung
$this->operation->process ( $req );
}

/**
* CRUD-Fragment anzeigen
* @param unbekannter $tpl-Vorlagenname
* @param unbekannter $params
*/
public function display($tpl, $params = array()) {
display ( self::PATH_VIEW . DIRECTORY_SEPARATOR . $tpl, array_merge ( $params, array (
'url_view' => $ this- >url ( SCrudOperation::METHOD_VIEW ),
'url_index' => $this->url ( SCrudOperation::METHOD_INDEX ),
'url_search' => SCrudOperation::METHOD_SEARCH),
'url_insert' => $this->url ( SCrudOperation::METHOD_INSERT),
'url_update' => $this->url( SCrudOperation::METHOD_UPDATE),
'url_doupdate' => $this->url ( SCrudOperation::METHOD_DOUPDATE ),
'url_doinsert' => $this->url ( SCrudOperation::METHOD_DOINSERT ),
'url_delete' => ;$this->url ( SCrudOperation::METHOD_DELETE ),
'url_delete_multi'=>$this->url(SCrudOperation::METHOD_DELETEMULTI)
) ) );
}
}

/**
* Die Basisklasse aller CRUD-Unterklassen, implementiert eine Methode zum Aufzeichnen des Haupt-CRUD-Objekts
*
* @author bluehire
*
*/
abstract class SCrudSub {
// Haupt-CRUD-Objekt
protected $crud;

Das Obige ist der Kurzbeitrag Im IcePHP-Framework Taichungs allgemeines CRUD-Funktionsframework (5) Inhalt der SCrud-Master-Kontrollklasse. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (m.sbmmt.com)!


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 Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage