찾다
백엔드 개발PHP 튜토리얼IcePHP 프레임워크의 빠른 백엔드에 있는 범용 CRUD 기능 프레임워크(6) SCrudField 필드 클래스

/**
* CRUD 필드 수업
* @author bluehire
*
*/
class SCrudField extends SCrudSub {
// 다음 속성은 데이터베이스에서 가져옵니다(구성 파일, config/crud/*.config.php)
public $ name; / / 필드 이름
private $scale; // 정밀도
private $type; // 최대 길이
public $simpleType;
private $notNull; // NULL은 허용되지 않습니다
public $primaryKey; // 기본 키 여부
private $autoIncrement; // 자동 증가 여부
private $binary; 바이너리인지 여부
private $unsigned; // 서명되지 않음
private $hasDefault; // 기본값이 있습니까
public $defaultValue; // 필드 설명;

// 다시 계산된 기본값, 수정 가능
public $title; // 필드 제목

//다음 속성은 모두 부울이며 설정 가능
public $isPassword ; // 비밀번호 필드 여부
public $ isAbandon; // 폐기 여부
public $inGrid; // 목록 참여 여부
public $inInsert; 생성
public $inUpdate; // 수정 참여 여부
public $inView; // 보기 참여 여부
public $inSort; // 정렬 참여 여부
public $isCreated ; // 시간 필드 생성 여부
public $isUpdated; // 시간 필드 수정 여부

public $showType; //CRUD 필드 유형 Text/Image/Date/Time/String
public $updateType; //필드의 CRUD 유형 텍스트/이미지/날짜/시간/문자열
public $searchType; //검색 유형 LIKE/EQUAL/DATE/TIME/RANGE/DATERANGE/CHECK/RADIO/TREE/ LIST

public $enum; //이 필드는 열거형입니다. 여기서는 필드 저장 값과 표시된 값 간의 대응을 설정합니다.
public $foreignKey; //이 필드는 다른 테이블의 외래 키입니다. . 메인 테이블 이름과 메인 테이블 필드 이름을 여기에 설정하세요

public $regular; //프론트엔드와 백엔드 검증에 사용되는 정규식

public $width = false; 그림 너비 설정
public $height = false; //그림 높이 설정
public $style = false; //그림 스타일 설정
public $css = false; 🎜>public $alt = false; //이미지의 대체 텍스트 설정
public $format; //형식

public $searchDefault
public $searchMax ; //검색 범위 상한
public $searchMin; //검색 범위 하한

private $config; // 원래 구성 저장

/* *
* @param SCrud $father 기본 CRUD 객체
* @param array $c 데이터베이스 구성
*/
공용 함수 __construct(SCrud $father, array $c) {
$this->crud = $father;
$this->config = $c;

//모든 구성 값은 이 객체의 속성에 기록됩니다
foreach($c as $k=>$v){
$this->$k=$ v;
}

//일부 속성의 기본값 처리
$t=$c['simpleType'];
$n=$c['name'];

$default = array (
'title' => $c ['description'] ? : $n, //제목 기본값: 설명/필드 이름
'inSort' => ; strpos ( '>CIRNDT', $t ), //정렬 참여 여부: C/I/N/D/T
'inGrid' => strpos ( '>CIRLNDT', $t ) , // 리스트 참여 여부
'inInsert' => strpos ( '>CILNDTX', $t ) 및 ! $c ['primaryKey'], // 생성 참여 여부
' inUpdate' => strpos ( ' >CILNDTX', $t ) 및 ! $c ['primaryKey'], //편집 참여 여부
'inView' => strpos ( '>CIRLNDTX', $ t ), //디스플레이 참여 여부
'isCreated' => strpos ( '>CIDT', $t ) and ($n == 'created' 또는 $n == 'create_time'), // 생성 시간 필드인지
'isUpdated' => strpos ( '>CIDT', $t ) and ($n == 'updated' or $n == 'update_time'), //여부 수정 시간 필드입니다
);

foreach ( $default as $k => $v ) {
if (! isset ( $c [$k] )) {
$this->$k = $v;
}
}

//필드의 기본 CRUD 유형 설정
switch($t){
//Date
케이스 'D':
$this-> showType='날짜';
$this->updateType='날짜';
$this->searchType='DateRange';
break;
//Time
case ' T':
$this->showType='Time';
$this->updateType='Time';
$this->searchType='DateRange';
break;
//큰 텍스트
case 'X':
$this->showType='String';
$this ->updateType='Text';
$this-> ;searchType=null;
break;
//String
case 'C':
$this->showType= 'String';
$this->updateType=' String';
$this->searchType='Like';
break;
//Logic
case 'L' :
$this->showType='String';
$this->updateType='라디오';
$this->searchType='목록';
$this-> ;enum=array('0'=>'No', '1'=>'is');
break;
//integer
case 'I':
$this ->showType='문자열';
$this->updateType='String';
$this->searchType='Range';
break;
//자동 증가 정수
case 'R':
$ this->showType='String';
$this->updateType='String';
$this->searchType='Equal';
break;
//Floating 포인트
case 'N':
$this->showType='String';
$this->updateType='String';
$this->searchType='Range' ;
break;
기본값:
$this->showType='String';
$this->updateType='String';
$this->searchType=null ;
}
}

/**
* 사용하기 전에 필드를 다시 처리하세요
*/
공용 함수 process() {
// 외래 키를 열거형으로 처리
if ($this - >foreignKey) {
$fk = $this->foreignKey;
$t = table ( $fk ['table'] );
if (isset ( $fk ['where'] ) ) {
$t = $t->where ( $fk ['where'] );
}
if (isset ( $fk ['orderby'] )) {
$ t = $t->orderby ( $fk ['orderby'] );
}
$this->enum = $t->col ( $fk ['field'] );
}

//비밀번호는 검색에 참여하지 않습니다. 수정/생성시 비밀번호에 따라 표시됩니다
if ($this->isPassword) {
$this-> ;searchType = null;
$this->updateType = 'Password';
}
}

/**
* 이 필드를 정렬할 수 있는지 확인
* @return boolean
*/
공용 함수 isSortable(){
if($this ->isAbandon 또는 $this->simpleType=='X' 또는 $this->simpleType=='B' 또는 $this->simpleType=='L' 또는 $this ->isPassword 또는 !$ this->inGrid){
return false;
}

return $this->inSort;
}

/* *
* 이 필드가 생성에 참여하는지 확인
* @return boolean
*/
공용 함수 isInsertable(){
if($this->isAbandon 또는 $this->simpleType=='B' 또는 $this->isCreated 또는 $this-> ;isUpdated 또는 $this-> ;autoIncrement 또는 $this->primaryKey){
return false;
}
return $this->inInsert;
}

/ **
* 이 필드가 편집에 참여하는지 확인
* @return boolean
*/
공용 함수 isUpdatable(){
if($this->isAbandon 또는 $this->simpleType=='B' 또는 $this->isCreated 또는 $this- >isUpdated 또는 $this- >autoIncrement 또는 $this->primaryKey){
return false;
}
return $this->inInsert;
}

/**
* 이 필드가 목록 표시에 참여하는지 확인
* @return boolean
* /
공용 함수 isGridable(){
if($this->isAbandon 또는 $this->simpleType=='X' 또는 $this->simpleType==' B' 또는 $this->isPassword){
return false;
}

if($this->primaryKey 또는 $this->isSortable()){
return true;
}

return $this->inGrid;
}

/**
* 이 필드가 보기에 참여하는지 확인
* @return boolean
*/
공용 함수 isViewable(){
if($this-> isAbandon 또는 $this->simpleType=='B' 또는 $this->isPassword){
return false;
}
if($this->primaryKey ){
true 반환 ;
}
return $this->inView;
}

/**
* 디코딩 저장 기능
* @var Closure
*/
공개 $decode;

/**
* 디코딩 기능/디코딩 설정
* @param Closure|mixed $decode
* @return SCrudField
*/
public function decode($decode) {
if ($decode instanceof Closure) {
//디코딩 기능 설정
$this-> ;decode = $decode;
return $this;
} else {
//특정 디코딩
$closure = $this->decode;
return $closure( $decode );
}
}

/**
* 인코딩 저장 기능
* @var Closure
*/
공개 $encode;

/**
* 인코딩 기능 설정
* @param Closure|mixed $encode
* @return SCrudField
*/
공개 함수 인코딩( $encode) {
if ($encode 인스턴스 오브 클로저) {
//인코딩 함수 설정
$this->encode = $encode;
return $this;
} else {
//특정 인코딩
$closure = $this->encode;
return $closure( $encode );
}
}

/**
* 이 필드를 목록/보기에 표시
*
* @param $value 필드 값
* @return string
*/
공용 함수 show ($value) {
//성능 값으로 표시되는 열거형
if ($this->enum) {
$value = $this->enum [ $value];
}

switch ($this->showType) {
case 'Image' :
return $this->crud->display ( 'grid_image' , 배열(
' src' => $value,
'width' => $this->width,
'height' => $this->height,
'스타일' => $this->style,
'css' => $this->css,
'alt' => $this->alt
);
'시간' 사례 :
$format = $this->형식 ? : 'Y-m-d H:i:s';
반품 날짜( $format, $value );
case 'Date' :
$format = $this->format ? : 'Y-m-d';
반환 날짜( $format, $value );
case 'Text' :
return $this->showString( $value );
기본값:
if ($this->decode) {
return $this->decode ( $value );
}
return $value;
}
}

/**
* 생성/편집 시 표시
* @param string $default
*/
공개 함수 showUpdate($v=''){ 
$tpl = 'update_' . strtolower ( $this->updateType );
$this->crud->display ( $tpl, array (
'field' => $this,
'value'=> $v
) );
}

/**
* 검색 참여 여부 결정
* @return boolean
*/
공용 함수 isSearchable(){
if($this->isAbandon 또는 !$this ->searchType 또는 $this->isPassword){
false 반환;
}
true 반환;
}

/**
* 검색 기준 표시
* @param string $default
*/
공용 함수 showSearch() {
if(!$this->isSearchable()){
return;
}

//如果是枚举,增加一个 不限aze 的参数
if($this->enum){
$enum=array_merge(array(null=>'不限system'),$this->enum);
}else{
$enum=null;
}

return $this->crud->display( 'search_' . strtolower( $this->searchType ), 배열(
'title' = > $this->title,
'name' => 'crud_' . $this->name,
'default' => $this->searchDefault,
'min ' => $this->searchMin,
'max' => $this->searchMax,
'enum'=>$enum, 
) );
}

/**
* 허용되지 않는 문자가 있는지 확인
* @param 알 수 없는 $v
* @param 알 수 없는 $chars
* @return boolean
*/
비공개 함수 antiInject($v,$chars){
for($i=0;$i if(strpos($v,$chars[$i])!==false)
false 반환;
}
true 반환;
}

/* *
* 퍼지 일치 쿼리 조건 구성
* @param SRequest $req
* @return boolean|string
*/
비공개 함수 whereLike(SRequest $req){
//请求参数name
$name='crud_'.$this->name;

/ /如果不存在此请求参数
if(!$req->exist($name)){
return false;
}

//如果请求参数为空
$v=trim($req->$name);
if(!$v){
return false;
}

//如果请求参数中有無法字符
if(!$this->antiInject($v, ''"\%_')){
return false;
}

//返回条件 
return '`'.$this->name.'` like "%'.$v.'%"';
}

/**
* 정확히 일치하는 쿼리 조건 구성
* @param SRequest $req
* @return boolean|multitype:string
*/
비공개 함수 whereEqual (S요청 $req){
//请求参数name
$name='crud_'.$this->name;

//如果不存재此请求参数
if( !$req->exist($name)){
false 반환;
}

//如果请求参数为空
$v=trim($req->$ name);

if(!strlen($v)){
return false;
}

//如果请求参数中有無法字符
if(! $this->antiInject($v, ''"\')){
false 반환;
}

//对参数进行标准化
switch($this-> simpleType){
case 'I':
return array($this->name=>intval($v));
case 'L':
return array($this- >name=>($v=='1' or strtolower($v)=='true')?1:0);
case 'N':
return array($this-> ;name=>floatval($v));
case 'D':
$p=strtotime($v);
if(!$p){
return false;
}
return array($this->name=>date('Y-m-d',$p));
case 'T':
$t=strtotime($v);
if(!$t){
return false;
}
return array($this->name=>date('Y-m-d H:i:s',$t)) ;
}

//返回条件
return array($this->name=>$v);
}

/**
* 날짜 일치를 위한 검색 조건 구성
* @param SRequest $req
* @return boolean|multitype:Ambigous
*/
비공개 함수 whereDate(SRequest $req){
//请求参数name
$name='crud_'.$this->name;

//如果不存재此请求参数
if(!$req->exist($name)){
return false;
}

//如果请求参数为공간
$v= Trim($req->$name);
if(!$v){
return false;
}

//如果请求参数中有無法字符
if (!$this->antiInject($v, ''"\')){
false 반환;
}

//如果无法按日期解析
$v=strtotime ($v);
if($v){
return false;
}

//对参数进行标准化
switch($this->simpleType){
케이스 'C':
케이스 'D':
return array($this->name=>date('Y-m-d',$v));
케이스 'T':
return array($this->name=>date('Y-m-d H:i:s',$v));
}

//반환 조건
return array( $this->name=>$v);
}

/**
* 요청 매개변수에서 날짜 범위 경계 매개변수 가져오기
* @param 알 수 없는 $name
* @param SRequest $req
* @return boolean|string|number|모호함
*/
비공개 함수 whereOne($name, SRequest $req) {
/ / 이 요청 매개변수가 존재하지 않는 경우
if (! $req->exist ( $name )) {
return false;
}

// 요청 매개변수가 비어 있는 경우
$v = Trim ( $req->$name );
if (! $v) {
return false;
}

// 잘못된 문자가 있는 경우 요청 매개변수
if (! $this->antiInject ( $v, '''\' )) {
return false;
}

// 매개변수 표준화
switch ($this->simpleType) {
case 'C' :
return $v;
case 'I' :
case 'R':
return intval( $v );
case 'N' :
return floatval ( $v );
case 'D' :
// 날짜별로 구문 분석할 수 없는 경우
$v = strtotime( $v );
if ($v) {
return false;
}
반환 날짜( 'Y-m-d', $v );
case 'T' :
// 날짜를 사용할 수 없는 경우 구문 분석
$v = strtotime ( $v );
if ($v) {
return false;
}
반환 날짜( 'Y-m-d H:i:s ', $v ) ;
}

return $v;
}

/**
* 요청 매개변수를 기반으로 검색 기준 생성
*/
비공개 함수 whereRange(SRequest $req){
// 매개변수 이름 요청
$name='crud_'.$this->name;

//경계 값 가져오기
$min=$this->whereOne( $name.'_min' ,$req);
$max=$this->whereOne($name.'_max',$req);

if(!$min 및 !$max ){
false 반환;
}

if(!$max){
return '`'.$this->name.'`>="'.$min .'"';
}

if(!$min){
return '`'.$this->name.'`}

//반환 조건
return '`'.$this->name.'` BETWEEN "'.$min.'" AND "'.$max.' "';
}

/**
* 날짜 범위에 대한 쿼리 조건 구성
* @param SRequest $req
* @return boolean|string
*/
비공개 함수 whereDateRange(SRequest $req){
//요청 매개변수 이름
$name='crud_' .$this-> name;

//경계값 계산
$min=$this->whereOne($name.'_min',$req);
$max=$ this->whereOne( $name.'_max',$req);

if(!$min 및 !$max){
return false;
}

if(!$max) {
return '`'.$this->name.'`>="'.$min.'"';
}

if(! $min){
return '`'.$this->name.'`}

//반환 조건
return '`'.$this->name.'` BETWEEN "'.$min.'" AND "'.$max.'"';
}

비공개 함수 whereTime(SRequest $req){
//@todo: 시간 일치를 위한 쿼리 조건
}

/**
* 라디오 검색을 위한 쿼리 조건 구성
* @param SRequest $req
* @return boolean|multitype:Ambigous
*/
비공개 함수 whereRadio(SRequest $req){
//요청 매개변수 이름
$name='crud_'.$this->name;

//이 요청 매개변수가 존재하지 않는 경우
if(!$req->exist( $name)){
return false;
}

//요청 매개변수가 비어 있는 경우
$v=trim($req->$name);
if (!$v){
return false;
}

//요청 매개변수에 잘못된 문자가 있는 경우
if(!$this->antiInject($v, ' "\')){
return false;
}

//매개변수 표준화
switch($this->simpleType){
case 'I':
case 'R':
return array($this->name=>intval($v));
case 'L':
return array($this->name=> ( $v=='1 ' 또는 strtolower($v)=='true'));
}

//반환 조건
반환 배열($this->name=> ;$v);
}

/**
* 사용자 요청을 기반으로 다중 선택 검색 쿼리 조건 구성
* @param SRequest $req
* @return boolean|multitype:Ambigous
*/
비공개 함수 whereCheck(SRequest $req){
//요청 매개변수 이름
$name=' crud_'.$this-> ;name;

//이 요청 매개변수가 존재하지 않는 경우
if(!$req->exist($name)){
return false;
}

//요청 매개변수가 비어 있는 경우
$v=trim($req->$name);
if(!$v){
false를 반환합니다.
}

//요청 매개변수에 잘못된 문자가 있는 경우
if(!$this->antiInject($v, ''"\')){
false 반환 ;
}

//매개변수 표준화
switch($this->simpleType){
case 'I':
case 'R':
return 배열 ($this->name=> intval($v));
break;
case 'L':
return array($this->name=>( $v=='1' or strtolower($v)=='true'));
}

//返回条件
return array($this->name=>$v);
}

/**
* 사용자 요청 매개변수를 기반으로 쿼리 조건 구성
*
* @param SRequest $req
* @throws Exception
* @return Ambigous |Ambigous |Ambigous |모호함
*/
공용 함수 where(SRequest $req) {
switch ($this->searchType) {
case 'Like' :
return $this->whereLike( $req );
case 'Equal' :
return $this-> whereEqual ( $req );
case 'Date' :
return $this->whereDate ( $req );
case 'Time' :
return $this->whereTime ( $req );
case 'List' :
return $this->whereEqual( $req );
case 'Tree' :
return $this->whereEqual( $req );
case 'Radio' :
return $this->whereRadio( $req );
case 'Check' :
return $this->whereCheck( $req );
case 'Range ' :
return $this->whereRange( $req );
case 'DateRange' :
return $this->whereDateRange( $req );
}
새 예외 발생 ( '程序流程不应该到达这里' );
}

 以上就是IcePHP框架中的快速后台中 의 통용 CRUD功能框架(六) SCrudField 字段더 많은 사진을 보려면 여기를 클릭하세요. PHP中文网(www.php.cn)!


성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
PHP의 현재 상태 : 웹 개발 동향을 살펴보십시오PHP의 현재 상태 : 웹 개발 동향을 살펴보십시오Apr 13, 2025 am 12:20 AM

PHP는 현대 웹 개발, 특히 컨텐츠 관리 및 전자 상거래 플랫폼에서 중요합니다. 1) PHP는 Laravel 및 Symfony와 같은 풍부한 생태계와 강력한 프레임 워크 지원을 가지고 있습니다. 2) Opcache 및 Nginx를 통해 성능 최적화를 달성 할 수 있습니다. 3) PHP8.0은 성능을 향상시키기 위해 JIT 컴파일러를 소개합니다. 4) 클라우드 네이티브 애플리케이션은 Docker 및 Kubernetes를 통해 배포되어 유연성과 확장 성을 향상시킵니다.

PHP 대 기타 언어 : 비교PHP 대 기타 언어 : 비교Apr 13, 2025 am 12:19 AM

PHP는 특히 빠른 개발 및 동적 컨텐츠를 처리하는 데 웹 개발에 적합하지만 데이터 과학 및 엔터프라이즈 수준의 애플리케이션에는 적합하지 않습니다. Python과 비교할 때 PHP는 웹 개발에 더 많은 장점이 있지만 데이터 과학 분야에서는 Python만큼 좋지 않습니다. Java와 비교할 때 PHP는 엔터프라이즈 레벨 애플리케이션에서 더 나빠지지만 웹 개발에서는 더 유연합니다. JavaScript와 비교할 때 PHP는 백엔드 개발에서 더 간결하지만 프론트 엔드 개발에서는 JavaScript만큼 좋지 않습니다.

PHP vs. Python : 핵심 기능 및 기능PHP vs. Python : 핵심 기능 및 기능Apr 13, 2025 am 12:16 AM

PHP와 Python은 각각 고유 한 장점이 있으며 다양한 시나리오에 적합합니다. 1.PHP는 웹 개발에 적합하며 내장 웹 서버 및 풍부한 기능 라이브러리를 제공합니다. 2. Python은 간결한 구문과 강력한 표준 라이브러리가있는 데이터 과학 및 기계 학습에 적합합니다. 선택할 때 프로젝트 요구 사항에 따라 결정해야합니다.

PHP : 웹 개발의 핵심 언어PHP : 웹 개발의 핵심 언어Apr 13, 2025 am 12:08 AM

PHP는 서버 측에서 널리 사용되는 스크립팅 언어이며 특히 웹 개발에 적합합니다. 1.PHP는 HTML을 포함하고 HTTP 요청 및 응답을 처리 할 수 ​​있으며 다양한 데이터베이스를 지원할 수 있습니다. 2.PHP는 강력한 커뮤니티 지원 및 오픈 소스 리소스를 통해 동적 웹 컨텐츠, 프로세스 양식 데이터, 액세스 데이터베이스 등을 생성하는 데 사용됩니다. 3. PHP는 해석 된 언어이며, 실행 프로세스에는 어휘 분석, 문법 분석, 편집 및 실행이 포함됩니다. 4. PHP는 사용자 등록 시스템과 같은 고급 응용 프로그램을 위해 MySQL과 결합 할 수 있습니다. 5. PHP를 디버깅 할 때 error_reporting () 및 var_dump ()와 같은 함수를 사용할 수 있습니다. 6. 캐싱 메커니즘을 사용하여 PHP 코드를 최적화하고 데이터베이스 쿼리를 최적화하며 내장 기능을 사용하십시오. 7

PHP : 많은 웹 사이트의 기초PHP : 많은 웹 사이트의 기초Apr 13, 2025 am 12:07 AM

PHP가 많은 웹 사이트에서 선호되는 기술 스택 인 이유에는 사용 편의성, 강력한 커뮤니티 지원 및 광범위한 사용이 포함됩니다. 1) 배우고 사용하기 쉽고 초보자에게 적합합니다. 2) 거대한 개발자 커뮤니티와 풍부한 자원이 있습니다. 3) WordPress, Drupal 및 기타 플랫폼에서 널리 사용됩니다. 4) 웹 서버와 밀접하게 통합하여 개발 배포를 단순화합니다.

과대 광고 : 오늘 PHP의 역할을 평가합니다과대 광고 : 오늘 PHP의 역할을 평가합니다Apr 12, 2025 am 12:17 AM

PHP는 현대적인 프로그래밍, 특히 웹 개발 분야에서 강력하고 널리 사용되는 도구로 남아 있습니다. 1) PHP는 사용하기 쉽고 데이터베이스와 완벽하게 통합되며 많은 개발자에게 가장 먼저 선택됩니다. 2) 동적 컨텐츠 생성 및 객체 지향 프로그래밍을 지원하여 웹 사이트를 신속하게 작성하고 유지 관리하는 데 적합합니다. 3) 데이터베이스 쿼리를 캐싱하고 최적화함으로써 PHP의 성능을 향상시킬 수 있으며, 광범위한 커뮤니티와 풍부한 생태계는 오늘날의 기술 스택에 여전히 중요합니다.

PHP의 약한 참고 자료는 무엇이며 언제 유용합니까?PHP의 약한 참고 자료는 무엇이며 언제 유용합니까?Apr 12, 2025 am 12:13 AM

PHP에서는 약한 참조가 약한 회의 클래스를 통해 구현되며 쓰레기 수집가가 물체를 되 찾는 것을 방해하지 않습니다. 약한 참조는 캐싱 시스템 및 이벤트 리스너와 같은 시나리오에 적합합니다. 물체의 생존을 보장 할 수 없으며 쓰레기 수집이 지연 될 수 있음에 주목해야합니다.

PHP의 __invoke 마법 방법을 설명하십시오.PHP의 __invoke 마법 방법을 설명하십시오.Apr 12, 2025 am 12:07 AM

\ _ \ _ 호출 메소드를 사용하면 객체를 함수처럼 호출 할 수 있습니다. 1. 객체를 호출 할 수 있도록 메소드를 호출하는 \ _ \ _ 정의하십시오. 2. $ obj (...) 구문을 사용할 때 PHP는 \ _ \ _ invoke 메소드를 실행합니다. 3. 로깅 및 계산기, 코드 유연성 및 가독성 향상과 같은 시나리오에 적합합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구