Thinkphp panduan penggunaan fungsi huruf tunggal_php tips

WBOY
Lepaskan: 2016-05-16 09:00:20
asal
1780 orang telah melayarinya

방법A

컨트롤러를 내부적으로 인스턴스화하는 메서드는 다음 형식을 호출하는 데 사용됩니다: A('[project://][group/]module','controller layer name')
가장 간단한 사용법:

코드 복사 코드는 다음과 같습니다.
$User = A('User');

은 현재 프로젝트의 UserAction 컨트롤러를 인스턴스화하는 것을 의미합니다(이 컨트롤러에 해당하는 파일은 Lib/Action/UserAction.class에 있습니다.). 그룹 모드가 채택되고 다른 관리 그룹 컨트롤러를 인스턴스화하려는 경우 다음을 수행할 수 있습니다. 사용:

코드 복사 코드는 다음과 같습니다.
$User = A('Admin/User');

프로젝트 간 인스턴스화도 지원됩니다(프로젝트 디렉터리는 동일한 수준으로 유지되어야 함)

코드 복사 코드는 다음과 같습니다.
$User = A('Admin://User' );

은 관리 프로젝트
에서 UserAction 컨트롤러를 인스턴스화하는 것을 나타냅니다. 버전 1에는 계층적 컨트롤러에 대한 지원이 추가되었으므로 A 메서드를 사용하여 다른 컨트롤러를 인스턴스화할 수도 있습니다. 예:

코드 복사 코드는 다음과 같습니다.
$User = A('User','Event) ;

UserEvent 컨트롤러를 인스턴스화합니다(해당 파일은 Lib/Event/UserEvent.class에 있습니다.).
컨트롤러를 인스턴스화한 후 컨트롤러에서 메서드를 호출할 수 있습니다. 그러나 프로젝트 전체를 호출할 때 작업 메서드에 현재 컨트롤러에 대한 특수 변수 작업이 있는 경우 일반적으로 알 수 없는 부분이 있다는 점에 유의해야 합니다. 공개 호출이 필요한 컨트롤러 레이어는 너무 많은 종속성 없이 별도로 개발하는 것이 좋습니다.

B방법

이것은 동작과 함께 제공되며

와 같은 특정 동작을 수행할 수 있는 새로운 기능입니다.

코드 복사 코드는 다음과 같습니다.
B('app_begin');

즉, 프로젝트가 시작되기 전에 이 동작으로 정의된 모든 기능이 실행됩니다. 2개의 매개변수를 지원합니다. 두 번째 매개변수는 와 같은 배열을 허용해야 합니다.

코드 복사 코드는 다음과 같습니다.
B('app_begin',array("name"= & gt; "tdweb","time"=>time()));

C 방식

C 방법은 Think가 구성 매개변수를 설정, 획득, 저장하는 데 사용하는 방법으로, 더 자주 사용됩니다.
C 메소드를 이해하려면 먼저 Think의 구성을 이해해야 합니다. C 메소드의 모든 동작은 구성과 연관되어 있기 때문입니다. Think의 구성 파일은 배열 형식으로 정의됩니다.
함수 오버로딩 설계로 인해 사용법이 많아 하나씩 설명하겠습니다.
매개변수 설정

코드 복사 코드는 다음과 같습니다.
C('DB_NAME','think');

DB_NAME 구성 매개변수의 값이 think로 설정되어 있음을 나타냅니다. 구성 매개변수는 대소문자를 구분하지 않으므로 다음 작성 방법은 동일합니다.

코드 복사 코드는 다음과 같습니다.
C('db_name','think');

그러나 구성 정의 사양은 동일한 대문자로 유지하는 것이 좋습니다.
프로젝트의 모든 매개변수는 적용되기 전에 이 방법을 통해 동적으로 변경될 수 있습니다. 마지막 설정 값은 기존 구성의 이전 설정이나 정의를 덮어쓰며 매개변수 구성 방법을 사용하여 새 구성을 추가할 수도 있습니다.
다음과 같은 보조 구성 매개변수 설정을 지원합니다.

코드 복사 코드는 다음과 같습니다.
C('USER.USER_ID',8);

레벨 2 이상으로 매개변수를 구성하는 것은 권장되지 않습니다.
여러 매개변수를 설정하려면 일괄 설정을 사용할 수 있습니다. 예:

코드 복사 코드는 다음과 같습니다.
$config['user_id'] = 1;
$config['user_type'] = 1;
C($config);

Jika parameter pertama kaedah C dihantar ke dalam tatasusunan, ini bermakna tugasan kelompok Tugasan di atas adalah bersamaan dengan:

Salin kod Kod adalah seperti berikut:
C('USER_ID',1);
C('USER_TYPE',1);

Dapatkan parameter
Untuk mendapatkan parameter yang ditetapkan, anda boleh menggunakan:

Salin kod Kod adalah seperti berikut:
$userId = C('USER_ID');
$userType = C('USER_TYPE');

Jika parameter USER_ID belum ditentukan, NULL dikembalikan.
Ia juga boleh menyokong mendapatkan parameter konfigurasi sekunder, seperti:

Salin kod Kod adalah seperti berikut:
$userId = C('USER.USER_ID');

Jika parameter konfigurasi masuk kosong, ini bermakna mendapat semua parameter:

Salin kod Kod adalah seperti berikut:
$config = C();

Simpan tetapan
Versi .1 menambah fungsi untuk menyimpan parameter tetapan secara kekal, hanya untuk tugasan kelompok, contohnya:

Salin kod Kod adalah seperti berikut:
$config['user_id'] = 1;
$config['user_type'] = 1;
C($config,'name');

Selepas menetapkan parameter konfigurasi dalam kelompok, semua parameter konfigurasi semasa akan disimpan ke fail cache (atau kaedah caching dikonfigurasikan lain).
Selepas menyimpan, jika anda ingin mendapatkan semula parameter yang disimpan, anda boleh menggunakan

Salin kod Kod adalah seperti berikut:
$config = C('','name') ;

Antaranya, nama ialah pengecam cache yang digunakan semasa menyimpan parameter sebelum ini. Ia mesti konsisten untuk mendapatkan semula parameter yang disimpan dengan betul. Parameter yang diambil akan digabungkan dengan parameter konfigurasi semasa, tanpa penggabungan manual.

Kaedah D

Kaedah D hendaklah menjadi kaedah yang paling biasa digunakan untuk membuat contoh kelas model tersuai. Ia merupakan enkapsulasi instantiasi kelas Model oleh rangka kerja Think. Ia juga melaksanakan mod tunggal dan menyokong panggilan silang dan kumpulan . , format panggilan adalah seperti berikut:
D('[projek://][kumpulan/]model','nama lapisan model')
Nilai pulangan kaedah ialah objek model yang diinstantiasi.
Kaedah D secara automatik boleh mengesan kelas model Jika kelas model tersuai wujud, kelas model tersuai akan dijadikan instantiated berubah secara instan.
Penggunaan kaedah D yang paling biasa adalah untuk membuat model tersuai bagi projek semasa, contohnya:

Salin kod Kod adalah seperti berikut:
// Instantite the User model
$User = D('Pengguna');

Ia akan mengimport fail Lib/Model/UserModel.class di bawah projek semasa, dan kemudian menjadikan kelas UserModel, jadi kod sebenar mungkin bersamaan dengan yang berikut: .

Salin kod Kod adalah seperti berikut:
import('@.Model.UserModel' );
$User = new UserModel();

Tetapi jika anda menggunakan kaedah D, jika kelas UserModel tidak wujud, ia secara automatik akan memanggil

Salin kod Kod adalah seperti berikut:
Model baharu('Pengguna');

Dan tidak perlu membuat instantiat lagi apabila memanggil untuk kali kedua, yang boleh mengurangkan jumlah tertentu overhed instantiasi objek.
Kaedah D boleh menyokong model instantiating merentas kumpulan dan projek, contohnya:

Salin kod Kod adalah seperti berikut:
//관리 프로젝트의 사용자 모델 인스턴스화
D('관리자://사용자')
//관리자 그룹의 사용자 모델 인스턴스화
D('관리자/사용자')

참고: 프로젝트 간 호출 모델을 구현하려면 두 프로젝트의 디렉터리 구조가 병렬인지 확인해야 합니다.
버전 .1부터 계층적 모델에 대한 추가 지원으로 인해 D 메서드는 다음과 같은 다른 모델도 인스턴스화할 수 있습니다.

코드 복사 코드는 다음과 같습니다.
// UserService 클래스 인스턴스화
$User = D('사용자','서비스');
// UserLogic 클래스 인스턴스화
$User = D('사용자','논리');

코드 복사 코드는 다음과 같습니다.
D('User','Service');

Lib/Service/UserService.class를 가져오고 인스턴스화하며 이는 다음 코드와 동일합니다.

코드 복사 코드는 다음과 같습니다.
import('@.Service.UserService' );
$User = 새로운 UserService();

F 방식

F 방식은 실제로 S 방식의 하위 집합으로, 단순 데이터 캐싱에만 사용되며, 캐시 유효 기간을 지원하지 않으므로 효율성이 더 높습니다. 따라서 우리는 이를 빠른 캐시 방식이라고 부르기도 합니다.

F 방식의 특징은 다음과 같습니다.
간단한 데이터 캐싱
파일로 저장
데이터를 반환하여 캐시를 로드합니다.
하위 디렉터리 캐싱 및 자동 생성을 지원합니다.
캐시 삭제 및 일괄 삭제 지원
캐싱 쓰기 및 읽기

코드 복사 코드는 다음과 같습니다.
F('data','test data');

기본 저장 시작 경로는 DATA_PATH(이 상수는 기본 구성에서 RUNTIME_PATH.'Data/'에 위치)이며, 이는 파일 이름이 DATA_PATH.'data.'인 캐시 파일이 생성된다는 의미입니다.
참고: 데이터 덮어쓰기 및 충돌을 방지하려면 캐시 식별자가 고유한지 확인하세요.
다음에 캐시된 데이터를 읽을 때 다음을 사용하세요.

코드 복사 코드는 다음과 같습니다.
$Data = F('data');

예를 들어 다음과 같이 하위 디렉터리에 저장할 수 있습니다.

코드 복사 코드는 다음과 같습니다.
F('user/data',$data); // 캐시 쓰기
F('사용자/데이터'); // 캐시 읽기

DATA_PATH.'user/data.' 캐시 파일이 생성됩니다. 사용자 하위 디렉터리가 없으면 다음과 같은 다중 수준 하위 디렉터리도 지원됩니다.

코드 복사 코드는 다음과 같습니다.
F('level1/level2/data',$data );
캐시의 시작 디렉터리를 지정해야 하는 경우 다음 방법을 사용할 수 있습니다.

코드 복사 코드는 다음과 같습니다.
F('data',$data,TEMP_PATH);
획득 시 다음을 사용해야 합니다.

코드 복사 코드는 다음과 같습니다.
F('data','',TEMP_PATH);
캐시 삭제
캐시 삭제도 쉽습니다. 다음을 사용하세요.

코드 복사 코드는 다음과 같습니다.
F('data',NULL)
두 번째 파라미터로 NULL을 전달한다는 것은 데이터로 식별된 데이터 캐시를 삭제한다는 의미입니다.
특히 하위 디렉터리 캐시의 경우 일괄 삭제 기능을 지원합니다. 사용자 하위 디렉터리에 있는 모든 캐시된 데이터를 삭제하려면 다음을 사용하세요.

코드 복사 코드는 다음과 같습니다.
F('pengguna/*',NULL);

Atau gunakan syarat penapis untuk memadam, contohnya:

Salin kod Kod adalah seperti berikut:
F('user/[^a]*', NULL);

Kaedah G

Fungsi yang telah lama diperlukan oleh Thinkphp untuk dilengkapkan melalui kaedah debug_start, debug_end dan juga kelas Debug telah digantikan dengan kaedah G yang mudah dalam versi 3.1, yang merupakan peningkatan yang hebat.
Fungsi kaedah G merangkumi dua fungsi: kedudukan penandaan dan statistik selang. Mari kita lihat penggunaan khusus:
Tandai lokasi
Penggunaan pertama kaedah G adalah untuk menandakan kedudukan, contohnya:

Salin kod Kod adalah seperti berikut:
G('mulakan');

Menunjukkan bahawa kedudukan semasa ditandakan sebagai tag mula, dan masa pelaksanaan kedudukan semasa direkodkan Jika persekitaran menyokongnya, penggunaan memori juga boleh dirakam. Penanda kaedah G boleh dipanggil di mana-mana sahaja.
Statistik masa berjalan
Selepas menandakan kedudukan, kita boleh memanggil kaedah G sekali lagi untuk melaksanakan statistik selang, contohnya:

Salin kod Kod adalah seperti berikut:
G('begin');
// ...Coretan lain
G('tamat');
// ...mungkin ada kod lain di sini
// Menjalankan selang statistik
echo G('mulai','akhir').'s';

G('mula','tamat') bermaksud mengira masa pelaksanaan dari kedudukan mula ke kedudukan tamat (unit ialah saat mesti menjadi kedudukan yang ditandakan Tandakan kedudukan semasa secara automatik sebagai teg tamat, dan hasil output adalah serupa dengan:

Salin kod Kod adalah seperti berikut:
0.0056s

Ketepatan statistik lalai ialah 4 tempat perpuluhan Jika anda merasakan bahawa ketepatan statistik ini tidak mencukupi, anda juga boleh menetapkannya sebagai:

Salin kod Kod adalah seperti berikut:
G('mulakan','akhir',6) .'s ';

Keluaran yang mungkin akan menjadi:

Salin kod Kod adalah seperti berikut:
0.005587s

Statistik overhed memori
Jika persekitaran anda menyokong statistik penggunaan memori, anda juga boleh menggunakan kaedah G untuk melaksanakan statistik overhed memori selang (unit: kb), contohnya:

Salin kod Kod adalah seperti berikut:
gema G('mulakan','akhir',' m') .'kb';

Parameter ketiga menggunakan m untuk mewakili statistik overhed memori Hasil output mungkin:

Salin kod Kod adalah seperti berikut:
625kb

Begitu juga, jika teg akhir tidak ditanda, kedudukan semasa akan ditandakan secara automatik sebagai teg akhir terlebih dahulu.
Jika persekitaran tidak menyokong statistik memori, parameter ini tidak sah dan statistik masa berjalan selang masih akan dilakukan.
Lupakan debug_start dan debug_end, kesederhanaan adalah cara untuk pergi, anda tahu~

Kaedah saya

Kaedah I Thinkphp adalah baharu dalam versi 3.1.3 Jika anda menggunakan versi 3.* sebelumnya, anda boleh terus merujuk kepada bahagian pembolehubah siri tutorial permulaan pantas 3.1.
Gambaran keseluruhan
Seperti yang anda lihat, kaedah I adalah ahli baru fungsi huruf tunggal Thinkphp Namanya berasal dari Input Bahasa Inggeris (input) Ia digunakan terutamanya untuk mendapatkan pembolehubah input sistem dengan lebih mudah dan selamat . Format penggunaan adalah seperti berikut:
I('Jenis pembolehubah. Nama pembolehubah',['Nilai lalai'],['Kaedah penapis'])
Jenis pembolehubah merujuk kepada kaedah permintaan atau jenis input, termasuk:
dapatkan Dapatkan parameter GET
post Dapatkan parameter POST
param secara automatik menentukan jenis permintaan untuk mendapatkan parameter GET, POST atau PUT
permintaan mendapat parameter REQUEST
put mendapat parameter PUT
sesi mendapat parameter $_SESSION
kuki mendapat parameter $_COOKIE
pelayan mendapat parameter $_SERVER
globals mendapat parameter $GLOBALS
Nota: Jenis pembolehubah tidak sensitif huruf besar-besaran.
Nama pembolehubah adalah sangat sensitif huruf besar.
Kedua-dua nilai lalai dan kaedah penapisan adalah parameter pilihan.
Penggunaan
Mari kita ambil jenis pembolehubah GET sebagai contoh untuk menggambarkan penggunaan kaedah I:

Salin kod Kod adalah seperti berikut:
echo I('get.id'); Bersamaan dengan $ _GET['id']
echo I('get.name'); // Bersamaan dengan $_GET['name']

Sokong nilai lalai:

Salin kod Kod tersebut adalah seperti berikut:
echo I('get.id',0); // jika Jika $_GET['id'] tidak wujud, ia akan mengembalikan 0
echo I('get.name',''); // Jika $_GET['name'] tidak wujud, kembalikan rentetan kosong

Tapis mengikut kaedah:

Salin kod Kod adalah seperti berikut:
gema I('get.name','', 'htmlspecialchars' ); // Gunakan kaedah htmlspecialchars untuk menapis $_GET['name']. Menyokong mendapatkan keseluruhan jenis pembolehubah secara terus, contohnya:

Salin kod Kod adalah seperti berikut:I('get.'); keseluruhan tatasusunan $_GET
Dengan cara yang sama, kita boleh mendapatkan pembolehubah jawatan atau jenis input lain, contohnya:

Salin kod Kod adalah seperti berikut:1.I('post.name','' ,'htmlspecialchars '); // Gunakan kaedah htmlspecialchars untuk menapis $_POST['name']. I('session.user_id',0); // Dapatkan $_SESSION['user_id'] Jika ia tidak wujud, ia lalai kepada 0
I('cookie.'); // Dapatkan keseluruhan tatasusunan $_COOKIE
I('server.REQUEST_METHOD'); // Dapatkan $_SERVER['REQUEST_METHOD']

Jenis pembolehubah param ialah kaedah khusus rangka kerja untuk mendapatkan pembolehubah yang menyokong penentuan automatik jenis permintaan semasa, contohnya:

Salin kod Kod adalah seperti berikut:echo I('param.id');
Jika jenis permintaan semasa ialah GET, ia bersamaan dengan GET['id']. Jika jenis permintaan semasa ialah POST atau PUT, ia bersamaan dengan mendapatkan _POST['id'] atau id parameter PUT.
Dan pembolehubah jenis param juga boleh menggunakan indeks digital untuk mendapatkan parameter URL (parameter mod PATHINFO mesti sah, sama ada GET atau POST), contohnya:
Alamat URL akses semasa ialah


Salin kod Kod adalah seperti berikut:http://serverName/index./New/2013 /06/ 01
Kemudian kita boleh lulus

Salin kod Kod adalah seperti berikut:echo I('param.1'); Output 2013 echo I('param.2'); // Output 06
echo I('param.3'); // Output 01

실제로 param 변수 유형의 작성 방법은 다음과 같이 단순화될 수 있습니다.

코드 복사 코드는 다음과 같습니다.
I('id') // I와 동일합니다. ('param .id')
I('name'); // I('param.name')

과 동일 변수 필터링
I 메소드를 사용할 때 변수는 실제로 두 개의 필터를 거칩니다. 첫 번째는 전역 필터링입니다. VAR_FILTERS 매개변수를 구성하여 수행됩니다. 버전 3.1 이후에는 VAR_FILTERS 매개변수의 필터링 메커니즘이 변경되었습니다. array_walk_recursive 메서드를 사용한 재귀 필터링의 경우 필터링 메서드의 주요 요구 사항은 참조로 반환되어야 한다는 것입니다. 따라서 여기서 htmlspecialchars를 설정하는 것은 유효하지 않습니다. 예를 들면 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
function filter_default(&$value){
$value = htmlspecialchars($value);
}
그런 다음 구성합니다:

코드 복사 코드는 다음과 같습니다.
'VAR_FILTERS'=>'filter_default'
여러 번 필터링해야 하는 경우 다음을 사용할 수 있습니다.

코드 복사 코드는 다음과 같습니다.
'VAR_FILTERS'=>'filter_default,filter_exp'
filter_exp 메소드는 프레임워크에 내장된 보안 필터링 메소드로, 모델의 EXP 함수를 이용한 인젝션 공격을 방지하기 위해 사용됩니다.
VAR_FILTERS 매개변수는 전역 필터링 메커니즘을 설정하고 효율성에 영향을 미치는 재귀 필터링을 사용하므로, I 메소드의 세 번째 매개변수에 필터링 방법을 설정하는 것 외에도 필터링 방법을 설정할 수도 있습니다. DEFAULT_FILTER 매개변수를 구성하면 실제로 이 매개변수의 기본 설정은
입니다.

코드 복사 코드는 다음과 같습니다.
'DEFAULT_FILTER' =>
즉, I 메소드의 모든 획득 변수는 htmlspecialchars로 필터링된 다음:

코드 복사 코드는 다음과 같습니다.I('get.name') // 동일합니다. htmlspecialchars( $_GET['name'])
마찬가지로 이 매개변수는 여러 필터를 지원할 수도 있습니다. 예:

코드 복사 코드는 다음과 같습니다.'DEFAULT_FILTER' => 🎜>

코드 복사 코드는 다음과 같습니다.I('get.name') // 동일합니다. htmlspecialchars(strip_tags($_GET['name']))
로 I 방법을 사용할 때 필터링 방법을 지정하면 DEFAULT_FILTER 설정이 무시됩니다. 예:

코드 복사 코드는 다음과 같습니다.echo I('get.name','', 'strip_tags' ); //strip_tags($_GET['name'])
과 동일 I 메소드의 세 번째 매개변수가 함수 이름에 전달되면 해당 함수가 호출되어 변수를 필터링하고 이를 반환한다는 의미입니다(변수가 배열이면 array_map이 자동으로 필터링에 사용됩니다). 그렇지 않으면 내장된 filter_var 메소드는 필터링을 위해 호출됩니다. 예:


코드 복사 코드는 다음과 같습니다.I('post.email','',FILTER_VALIDATE_EMAIL);
$_POST['email'] 형식이 확인되고 요구 사항을 충족하지 않으면 빈 문자열이 반환됨을 나타냅니다.
(자세한 확인 형식은 공식 매뉴얼의 filter_var 사용법을 참고하세요.)
또는 다음 문자 식별을 사용할 수 있습니다.
코드 복사 코드는 다음과 같습니다.
I('post.email','','email') ;

지원되는 필터 이름은 filter_list 메소드에서 유효한 값이어야 합니다(서버 환경에 따라 다를 수 있음).
코드 복사 코드는 다음과 같습니다.
int
부울
떠다
검증_정규식
유효성_URL
이메일 확인
검증_ip
문자열
벗겨진
인코딩
특수문자
안전하지 않은_원시
이메일
URL
숫자_정수
숫자_부동
마술_인용문
콜백

일부 특수한 경우에는 DEFAULT_FILTER가 설정되었더라도 필터링을 수행하지 않으려면 다음을 사용할 수 있습니다.

코드 복사 코드는 다음과 같습니다.
I('get.name','',NULL );

필터링 매개변수가 NULL로 설정되면 더 이상 필터링이 수행되지 않는다는 의미입니다.

L 방식

L 메서드는 여러 언어가 활성화된 경우 현재 언어 정의를 설정하고 가져오는 데 사용됩니다.
호출 형식: L('언어 변수',['언어 값'])
언어 변수 설정
언어 패키지를 사용하여 언어 변수를 정의하는 것 외에도 L 메서드를 사용하여 언어 변수를 동적으로 설정할 수 있습니다. 예를 들면 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
L('LANG_VAR','Language Definition');

언어 정의는 대소문자를 구분하지 않으므로 다음도 동일합니다.

코드 복사 코드는 다음과 같습니다.
L('lang_var','언어 정의');

다만, 표준화를 위해 언어 변수 정의 시에는 대문자를 사용하는 것을 권장합니다.
L 방법은 언어 변수의 일괄 설정을 지원합니다. 예:

코드 복사 코드는 다음과 같습니다.
$lang['lang_var1'] = '언어 정의 1 ';
$lang['lang_var2'] = '언어 정의 2';
$lang['lang_var3'] = '언어 정의 3';
엘($lang);

lang_var1, lang_var2, lang_var3 세 가지 언어 변수가 동시에 설정되었음을 나타냅니다.
[-더보기-]
언어 변수 가져오기

코드 복사 코드는 다음과 같습니다.
$langVar = L('LANG_VAR');

또는:

코드 복사 코드는 다음과 같습니다.
$langVar = L('lang_var');

매개변수가 비어 있으면 현재 정의된 모든 언어 변수(언어 정의 파일의 변수 포함)를 얻는다는 의미입니다.

코드 복사 코드는 다음과 같습니다.
$lang = L();

또는 템플릿에서 을 사용할 수도 있습니다.

코드 복사 코드는 다음과 같습니다.
{$Think.lang.lang_var}

언어 정의를 출력합니다.

M 방식

M 메소드는 기본 모델 클래스를 인스턴스화하는 데 사용됩니다. D 메소드와의 차이점은 다음과 같습니다.
, 모델 클래스를 맞춤설정하고 IO 로딩을 줄이며 성능을 높일 필요가 없습니다.
, 인스턴스화 후에는 기본 모델 클래스(기본값은 Model 클래스)의 메서드만 호출할 수 있습니다. , 인스턴스화할 때 테이블 접두사, 데이터베이스 및 데이터베이스 연결 정보를 지정할 수 있습니다. D 방법의 힘은 캡슐화하는 사용자 정의 모델 클래스가 얼마나 강력한지에 반영됩니다. 그러나 새로운 버전의 Think 프레임워크의 기본 모델 클래스가 점점 더 강력해짐에 따라 M 방법이 점점 더 실용적이 되고 있습니다. D 방식.
M 메소드 호출 형식:
M('[기본 모델명:]모델명','데이터 테이블 접두사','데이터베이스 연결 정보')
M 메서드의 구체적인 용도를 살펴보겠습니다.
, 기본 모델(Model) 클래스를 인스턴스화합니다
모델이 정의되지 않은 경우 다음 방법을 사용하여 작업을 위한 모델 클래스를 인스턴스화할 수 있습니다.

코드 복사 코드는 다음과 같습니다. //사용자 모델 인스턴스화
$User = M('사용자');
//다른 데이터 작업 수행
$User->select();


이 방법은 모델 클래스를 정의할 필요가 없고 프로젝트 간 호출을 지원하므로 가장 간단하고 효율적입니다. 단점은 커스텀 모델 클래스가 없어 관련 비즈니스 로직을 작성할 수 없고 기본적인 CURD 작업만 완료할 수 있다는 점이다.

코드 복사 코드는 다음과 같습니다.$User = M('User');
실제로 다음과 같습니다:

코드 복사 코드는 다음과 같습니다.$User = new Model('User');
think_user 테이블의 동작을 나타냅니다. M 메서드에도 D 메서드와 마찬가지로 싱글톤 함수가 있으며, 여러 번 호출해도 반복적으로 인스턴스화되지 않습니다. M 방식의 모델명 매개변수는 데이터 테이블로 변환 시 자동으로 소문자로 변환되는데, 이는 Think의 데이터 테이블 명명 사양이 모두 소문자 형식임을 의미합니다.
, 다른 공개 모델 클래스를 인스턴스화
인스턴스화의 첫 번째 방법에는 모델 클래스 정의가 없으므로 일부 추가 논리적 방법을 캡슐화하기가 어렵습니다. 그러나 대부분의 경우 몇 가지 공통 논리를 확장하면 다음 방법을 시도해 볼 수 있습니다.

코드 복사 코드는 다음과 같습니다.$User = M('CommonModel:User');
사용법을 변경하는 것은 실제로 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.$User = new CommonModel('User');

시스템의 모델 클래스는 자동으로 로드될 수 있으므로 인스턴스화하기 전에 클래스 라이브러리를 수동으로 가져올 필요가 없습니다. 모델 클래스 CommonModel은 Model을 상속해야 합니다. CommonModel 클래스에서 몇 가지 일반적인 논리적 메서드를 정의할 수 있으므로 각 데이터 테이블에 대해 특정 모델 클래스를 정의할 필요가 없습니다. 프로젝트에 이미 100개 이상의 데이터 테이블이 있는 경우 대부분은 기본입니다. CURD 작업의 경우 일부 모델에만 있습니다. 캡슐화해야 하는 복잡한 비즈니스 논리이므로 첫 번째 방법과 두 번째 방법을 조합하는 것이 좋습니다.


, 수신 테이블 접두사, 데이터베이스 및 기타 정보


M 메소드에는 세 개의 매개변수가 있습니다. 첫 번째 매개변수는 모델 이름(기본 모델 클래스 및 데이터베이스를 포함할 수 있음)이고, 두 번째 매개변수는 데이터 테이블의 접두사를 설정하는 데 사용됩니다(테이블 접두사를 사용하려면 비워 두세요). 세 번째 매개변수는 현재 사용되는 데이터베이스 연결 정보를 설정하는 데 사용됩니다(현재 프로젝트에서 구성된 데이터베이스 연결 정보를 가져오려면 공백으로 두십시오). 예:

코드 복사 코드는 다음과 같습니다.$User = M('db2.User',' 생각해요_') ;
Model 모델 클래스를 인스턴스화하고 db2 데이터베이스에서 think_user 테이블을 운영하는 것을 나타냅니다.
두 번째 파라미터가 비어 있거나 전달되지 않은 경우 현재 프로젝트 구성에서 데이터 테이블 접두사를 사용한다는 의미입니다. 운영 중인 데이터 테이블에 테이블 접두사가 없는 경우

코드 복사 코드는 다음과 같습니다.$User = M('db1.User',null );

Model 모델 클래스를 인스턴스화하고 db1 데이터베이스에서 사용자 테이블을 운영하는 것을 나타냅니다.
운영하는 데이터베이스에 다른 사용자 계정이 필요한 경우 데이터베이스 연결 정보를 전달할 수 있습니다. 예:

코드 복사 코드는 다음과 같습니다.
$User = M('User','think_' ,'mysql ://user_a:1234@localhost:3306/think');

Model은 기본 모델 클래스를 표현하기 위해 사용되며, think_user 테이블을 운영하고, user_a 계정을 이용하여 데이터베이스에 접속하며, 운영하는 데이터베이스는 think이다.
세 번째 연결 정보 매개변수는 DSN 구성 또는 어레이 구성을 사용할 수 있으며 구성 매개변수도 지원할 수 있습니다.
예를 들어 프로젝트 구성 파일에 구성됩니다.

코드 복사 코드는 다음과 같습니다.
'DB_CONFIG'=>'mysql://user_a :1234@ localhost:3306/think';

그런 다음 다음을 사용할 수 있습니다.

코드 복사 코드는 다음과 같습니다.
$User = M('User','think_' ,'DB_CONFIG');

기본 모델 클래스와 데이터베이스를 함께 사용할 수 있습니다. 예:

코드 복사 코드는 다음과 같습니다.
$User = M('CommonModel:db2.User' ,'생각_');

계층적 모델을 인스턴스화하려면 공개 모델 클래스를 사용할 수 있습니다.

코드 복사 코드는 다음과 같습니다.
M('UserLogic:User');

UserLogic을 인스턴스화하는 것은 별 의미가 없지만 을 사용할 수 있기 때문입니다.

코드 복사 코드는 다음과 같습니다.
D('User','Logic');

동일한 기능을 달성하십시오.

R 방식

R 메소드는 특정 컨트롤러의 동작 메소드를 호출하는데 사용되는데, 이는 A 메소드를 더욱 강화하고 보완한 것입니다. 방법 A의 사용법은 여기를 참조하세요.
R 메서드 호출 형식:
R('[프로젝트://][그룹/]모듈/작업','매개변수','컨트롤러 레이어 이름')
예를 들어 작업 방법을 다음과 같이 정의합니다.

코드 복사 코드는 다음과 같습니다.
class UserAction extends Action {
공개 함수 세부정보($id){
M('사용자')->find($id);
반환 }
}

그런 다음 R 메서드를 통해 다른 컨트롤러에서 이 작업 메서드를 호출할 수 있습니다. (일반적으로 R 메서드는 모듈 간 호출에 사용됩니다.)

코드 복사 코드는 다음과 같습니다.
$data = R('User/detail',array ('5'));

사용자 컨트롤러의 세부 메소드가 호출되고(세부 메소드는 공개 유형이어야 함) 반환 값이 ID 5의 사용자 데이터를 쿼리함을 나타냅니다. 호출하려는 연산 메서드에 매개변수가 없으면 두 번째 매개변수를 비워두고 직접 사용할 수 있습니다.

코드 복사 코드는 다음과 같습니다.
$data = R('User/detail');

또한 그룹 간 및 프로젝트 호출을 지원할 수도 있습니다. 예:

코드 복사 코드는 다음과 같습니다.
R('Admin/User/detail',array( '5' ));

Admin 그룹 아래 User 컨트롤러의 세부 메소드를 호출함을 나타냅니다.

코드 복사 코드는 다음과 같습니다.
R('Admin://User/detail', 배열(' 5'));

Admin 프로젝트에서 User 컨트롤러의 세부 메소드를 호출함을 나타냅니다.
공식적인 권장 사항은 동일한 레이어에서 너무 많은 호출을 수행하지 않는 것입니다. 이는 논리적 혼란을 야기합니다. 공개적으로 호출되는 부분은 별도의 인터페이스로 캡슐화되어야 하며, 3.1 멀티 레이어 컨트롤러의 새로운 기능을 사용하여 별도의 컨트롤러 레이어를 추가할 수 있습니다. 예를 들어 인터페이스 호출의 경우 Api 컨트롤러 레이어 를 추가합니다.

코드 복사 코드는 다음과 같습니다.
class UserApi는 Action {
공개 함수 세부정보($id){
M('사용자')->find($id);
반환 }
}

그런 다음 R 메소드 호출을 사용하세요

코드 복사 코드는 다음과 같습니다.

$data = R('사용자/세부정보',array('5'),'Api');

즉, R 메서드의 세 번째 매개변수는 호출의 컨트롤러 계층 지정을 지원합니다.
동시에 R 메서드는 연산 메서드 호출 시 연산 접미사 설정 C('ACTION_SUFFIX')를 지원할 수 있습니다. 연산 메서드 접미사를 설정해도 여전히 R 메서드의 호출 메서드를 변경할 필요가 없습니다.

S방식

S 메서드는 현재 캐싱 메서드에 대한 캐시 매개변수 전달도 지원합니다. 예:

코드 복사 코드는 다음과 같습니다.

S('data',$Data,3600,'File',array('length'=>10,'temp'=>RUNTIME_PATH.'temp/'));

테스트 후 이 방법으로 사용하면 처음 세 개의 매개변수만 유효하고 나머지는 유효하지 않습니다
코드 복사 코드는 다음과 같습니다.

{ '파일',array('length'=>10,'temp'=>RUNTIME_PATH.'temp/')}

마지막으로 다음과 같이 사용하세요.
코드 복사 코드는 다음과 같습니다.

S('data1',$list,array('prefix'=>aaa','expire'=>'3600','temp'=>RUNTIME_PATH.'temp/1236'));

획득 시:
코드 복사 코드는 다음과 같습니다.

$sdata = S('data1','',array('prefix'=>'aaa','temp'=>RUNTIME_PATH.'temp/1236'));

T 방식

템플릿 파일을 보다 편리하게 출력하기 위해 새 버전에서는 템플릿 파일 이름을 생성하는 T 함수를 캡슐화했습니다.
사용법:
T([리소스://][모듈@][테마/][컨트롤러/]작업,[계층 구조 보기])
T 함수의 반환 값은 출력 렌더링을 위한 표시 및 가져오기 메서드에서 직접 사용할 수 있는 완전한 템플릿 파일 이름입니다.
예:

코드 복사 코드는 다음과 같습니다.

T('공개/메뉴');
// 현재 모듈로 돌아가기/View/Public/menu.html
T('blue/Public/menu');
// 현재 모듈 반환/View/blue/Public/menu.html
T('공개/메뉴','Tpl');
// 현재 모듈 반환/Tpl/Public/menu.html
T('공개/메뉴');
// TMPL_FILE_DEPR이 _인 경우 현재 모듈을 반환합니다/Tpl/Public_menu.html
T('공개/메뉴');
// TMPL_TEMPLATE_SUFFIX가 .tpl인 경우 현재 모듈/Tpl/Public/menu.tpl을 반환합니다
T('Admin@Public/menu');
//관리/보기/공개/menu.html로 돌아갑니다
T('Extend://Admin@Public/menu');
// Extend/Admin/View/Public/menu.html로 돌아갑니다. (Extend 디렉토리는 AUTOLOAD_NAMESPACE의 구성에 따라 다릅니다.)

표시 방법에서 T 함수를 직접 사용하세요:
코드 복사 코드는 다음과 같습니다.

//T 함수를 사용하여 템플릿 출력
$this->display(T('Admin@Public/menu'));

Die T-Funktion kann verschiedene hierarchische Ansichtsvorlagen ausgeben.

U-Methode

Die

U-Methode wird verwendet, um die Zusammenstellung von URL-Adressen abzuschließen. Ihre Funktion besteht darin, dass sie automatisch die entsprechende URL-Adresse basierend auf dem aktuellen URL-Modus und den aktuellen Einstellungen generieren kann U('address','parameter','pseudo-static','whether to jump','display domain name');

Der Vorteil der Verwendung der U-Methode in der Vorlage anstelle der Festlegung der URL-Adresse besteht darin, dass Sie keinen Code in der Vorlage ändern müssen, sobald sich Ihre Umgebung oder die Parametereinstellungen ändern.


Das Aufrufformat in der Vorlage muss {:U('address', 'parameter'...)🎜> sein


Anwendungsbeispiel der U-Methode:


U('User/add') // Generieren Sie die Add-Operationsadresse des Benutzermoduls



Kann auch Gruppenanrufe unterstützen:


U('Home/User/add') // Generieren Sie die Add-Operationsadresse des Benutzermoduls der Home-Gruppe



Natürlich können Sie auch einfach den Operationsnamen schreiben, um den Aufruf des aktuellen Moduls anzuzeigen


U('add') // Generieren Sie die Add-Operationsadresse des aktuellen Zugriffsmoduls



Zusätzlich zu Gruppen-, Modul- und Operationsnamen können wir auch einige Parameter übergeben:


U('Blog/readid=1') // Erzeuge den Lesevorgang des Blog-Moduls und die URL-Adresse mit der ID 1



Der zweite Parameter der U-Methode unterstützt zwei Definitionsmethoden: Array und String. Wenn es sich nur um einen Zeichenfolgenparameter handelt, kann er im ersten Parameter definiert werden:


U('Blog/cate',array('cate_id'=>1,'status'=>1))
U('Blog/cate','cate_id=1&status=1')
U('Blog/catecate_id=1&status=1')



Aber die folgende Definitionsmethode darf keine Parameter übergeben:


U('Blog/cate/cate_id/1/status/1')



Je nach unterschiedlichen URL-Einstellungen des Projekts kann derselbe U-Methodenaufruf auf intelligente Weise unterschiedliche URL-Adresseffekte erzeugen, zum Beispiel:


U('Blog/readid=1')



Diese Definition ist ein Beispiel. Wenn die aktuelle URL auf den Normalmodus eingestellt ist, lautet die zuletzt generierte URL-Adresse:



http://serverName/index.m=Blog&a=read&id=1


Wenn die aktuelle URL auf den PATHINFO-Modus eingestellt ist, lautet die endgültige URL, die mit derselben Methode generiert wird: http://serverName/index./Blog/read/id/1

Wenn die aktuelle URL auf den REWRITE-Modus eingestellt ist, lautet die endgültige URL, die mit derselben Methode generiert wird: http://serverName/Blog/read/id/1
Wenn Sie auch das PATHINFO-Trennzeichen festlegen:

'URL_PATHINFO_DEPR'=>'_'



wird generiert


Code kopieren Der Code lautet wie folgt:

현재 URL이 REWRITE 모드로 설정되고 의사 정적 접미사가 html로 설정된 경우 동일한 방법으로 최종 생성된 URL 주소는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.

여러 개의 의사 정적 지원이 설정된 경우 첫 번째 의사 정적 접미사가 URL 주소 끝에 자동으로 추가됩니다. 물론 U 메서드에서 생성할 의사 정적 접미사를 수동으로 지정할 수도 있습니다. , 예:

코드 복사 코드는 다음과 같습니다.

U('블로그/읽기','id=1','xml')

생성됩니다

코드 복사 코드는 다음과 같습니다.

U 방법은 라우팅 규칙을 정의하는 경우에도 라우팅을 지원할 수 있습니다.

코드 복사 코드는 다음과 같습니다.

'뉴스/:idd'=>'뉴스/읽기'

그럼 사용하시면 됩니다

코드 복사 코드는 다음과 같습니다.

유('/뉴스/1')

최종 생성된 URL 주소는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.

애플리케이션에 여러 하위 도메인의 작업 주소가 포함된 경우 U 메서드에서 주소를 생성하는 데 필요한 도메인 이름을 지정할 수도 있습니다. 예:

코드 복사 코드는 다음과 같습니다.

@ 뒤에 지정해야 하는 도메인 이름을 전달하면 됩니다.
또한, U 메소드의 다섯 번째 파라미터를 true로 설정하면 현재 도메인 이름이 자동으로 인식된다는 의미이며, 하위 도메인 이름 배포 설정인 APP_SUB_DOMAIN_DEPLOY, APP_SUB_DOMAIN_RULES에 따라 현재 주소의 하위 도메인 이름이 자동으로 생성됩니다.
URL_CASE_INSENSITIVE를 켜면 소문자 URL 주소가 균일하게 생성됩니다.

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!