> 백엔드 개발 > PHP 튜토리얼 > IcePHP 프레임워크의 빠른 백엔드에 있는 범용 CRUD 기능 프레임워크(5) SCrud 기본 제어 클래스

IcePHP 프레임워크의 빠른 백엔드에 있는 범용 CRUD 기능 프레임워크(5) SCrud 기본 제어 클래스

黄舟
풀어 주다: 2023-03-04 11:08:01
원래의
1273명이 탐색했습니다.

/**
* CRUD 마스터 클래스
* @author bluehire
*/
class SCrud {
const PATH_VIEW='crud'; //경로 이름 보기

/**
* 현재 목록 작업 구성
* @var SCrudOperation
*/
public $Operation;

/**
* 데이터 액세스 객체
* @var STable
*/
public $model;

private $table; // 기본 테이블 이름
private $config; array
public $fields; //모든 필드 객체의 배열

public $title; //전체 CRUD의 현재 비즈니스 제목
public $pageSize=20; >public $pageSort='id'; //목록 정렬 기준
public $pageDir='desc'; //목록 정렬 방향
public $rowNo=true; //목록에 행 번호가 표시되는지 여부

/**
* 목록 필터링
* @var Closure
*/
public $gridFilter;

//다음 작업이 있는지 여부
public $erationView=true;
public $erationInsert=true;
public $ OperationUpdate=true;
public $erationDelete=true;
public $erationMultiDelete=true;

//나중에 하이퍼링크 연결에 사용되는 현재 요청의 컨트롤러 및 작업 이름
비공개 $ 컨트롤러;
비공개 $action;

/**
*
* @param 알 수 없는 $table 기본 테이블 이름
* @param 알 수 없는 $controller 컨트롤러 이름
* @param 알 수 없는 $action 작업 이름
*/
공용 함수 __construct($table, $controller, $action) {
$this ->table = $table;
$this->controller = $controller;
$this->action = $action;

// 다양한 구성 객체 생성
$ this-> config = config ( 'crud/' . $table );
foreach ( $this->config as $c => $v ) {
if (strpos ( $c, '_ ' ) == = 0) {
$n = substr ( $c, 1 );
$this->$n = $v;
} else {
$this-> fields [$c ] = new SCrudField ( $this, $v );
}
}

//이 함수의 제목
$this->title=$this-> ;title?: $table.'Management';

//모든 작업 세트
$this->작업 = new SCrudOperationSet( $this );

//데이터 액세스 모델
$ this->model = table($table);
}

/**
* 필드 선택
*
* @param 알 수 없는 $name
* @return SCrudField
*/
공개 함수 필드($name) {
if ( ! isset ( $ this->fields [$name] )) {
return null;
}
return $this->fields [$name];
}

/**
* 이 테이블의 기본 키 필드 이름을 가져옵니다
* @return SCrudField
*/
공용 함수 getPrimaryField() {
// 모든 필드 보기
foreach( $this->fields as $field ) {
// 기본 키 필드를 쿼리해야 합니다
if ($field->primaryKey) {
return $field;
}
}

return false;
}

/**
* 정렬 가능한 모든 필드 가져오기
* @return SCrudField 배열
*/
공용 함수 listSortable(){
return array_filter ( $this->fields, function ($f) {
return $f->isSortable ();
} );
}

/**
* 검색 가능한 모든 필드 가져오기
* @return 다중 유형:
*/
공용 함수 listSearchable(){
return array_filter( $this->필드, 함수($f ) {
return $ f->isSearchable ();
} );
}

/**
* 모든 참여 목록의 필드 가져오기
* @return 다중 유형:
*/
공용 함수 listGridable(){
return array_filter ( $this- >fields, function ($f) {
return $f->isGridable ();
} );
}

/**
* 보기에 참여하는 모든 필드 가져오기
* @return 다중 유형:
*/
public function listViewable(){
return array_filter ( $this->fields, function ($f) {
return $f->isViewable ();
} ) ;
}

/**
* 생성과 관련된 모든 필드 가져오기
* @return 다중 유형:
*/
공용 함수 listInsertable(){
return array_filter ( $this->fields, function ($f) {
return $f->isInsertable ();
} );
}

/**
* 편집에 참여한 모든 필드 가져오기
* @return 다중 유형:
*/
공용 함수 listUpdatable(){
return array_filter( $ this->fields, function ($f) {
return $f->isUpdatable ();
} );
}

/**
* 모든 생성 시간 필드를 가져옵니다. 일반적으로 하나만 가져옵니다.
* @return multitype:
*/
공용 함수 listCreated() {
return array_filter ( $this->fields, function ($field) {
return $field->isCreated;
} );
}

/**
* 모든 수정 시간 필드를 가져옵니다. 일반적으로 하나만 가져옵니다.
* @return 다중 유형:
*/
공용 함수 listUpdated(){
return array_filter( $this->fields, function ($field) {
return $field->isUpdated ;
} );
}

/**
* URL 생성
*
* @param 알 수 없는 $method
* 세 번째 시스템 매개변수(이름은 m으로 고정됨)
* @param 알 수 없는 $params
* 기타 매개변수
* @return 문자열
*/
공용 함수 url($method, $params = array()) {
return STemplate:: 추가( LUrl::ice ( ) . '/', array_merge ( $params, array (
'c' => $this->컨트롤러,
'a' => $this->액션,
'm' => $method
) );
}

/**
* 공통 다중 선택 작업 추가
*
* @return SCrudOperationMulti
*/
공용 함수 OperationMulti($method) {
return $this->operation->add ( new SCrudOperationMulti ( $this, $method ) );
}

/**
* 공통 단일 행 작업 추가
*
* @return SCrudOperationRow
*/
공용 함수 OperationRow($method) {
return $this->Operation->add( new SCrudOperationRow( $ this, $method ) );
}

/**
* 공통 전체 테이블 작업 추가
*
* @return SCrudOperationTable
*/
공용 함수 OperationTable($method) {
return $this->operation->add ( new SCrudOperationTable ( $this, $method ) );
}

/**
* 작업 클래스로 구현된 요청 처리
*
* @param SRequest $req
*/
공용 함수 process(SRequest $req) {
//처리 전, 먼저 검색 조건, 목록, 생성, 수정, 보기 및 정렬을 위한 필드를 초기화합니다.
foreach($this->fields as $field){
if(!$field->isAbandon){
$ field->process();
}
}

//작업 설정
if($this->erationInsert){
$this->작업- > ;insert(new SCrudOperationTable($this,SCrudOperation::METHOD_INSERT));
$this->작업->insert(new SCrudOperation($this,SCrudOperation::METHOD_DOINSERT));
}
if($this->OperationMultiDelete){
$this->작업->insert(new SCrudOperationMulti($this,SCrudOperation::METHOD_DELETEMULTI));
}
if($this- > ;작업 삭제){
$this->작업->insert(new SCrudOperationRow($this,SCrudOperation::METHOD_DELETE))
}
if($this->작업 업데이트){
$this->작업->insert(new SCrudOperationRow($this,SCrudOperation::METHOD_UPDATE));
$this->작업->insert(new SCrudOperation($this,SCrudOperation::METHOD_DOUPDATE ) );
}
if($this->OperationView){
$this->Operation->insert(new SCrudOperationRow($this,SCrudOperation::METHOD_VIEW));
}

//작업 클래스 처리로 전송
$this->operation->process ( $req );
}

/**
* CRUD 조각 표시
* @param 알 수 없는 $tpl 템플릿 이름
* @param 알 수 없는 $params
*/
공용 함수 표시($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' => $this->url ( 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)
) ) );
}
}

/**
* 모든 CRUD 하위 클래스의 기본 클래스로, 기본 CRUD 객체를 기록하는 메서드를 구현합니다.
*
* @author bluehire
*
*/
abstract class SCrudSub {
// Main CRUD object
protected $crud;

위 내용은 빠른 포스팅입니다 IcePHP 프레임워크 Taichung의 일반 CRUD 기능 프레임워크 (5) SCrud 마스터 컨트롤 클래스 콘텐츠, 더 많은 관련 콘텐츠를 보려면 PHP 중국어 웹사이트(www.php.cn)를 참고하세요!


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿