yee ). Pada masa itu versi terbaru rangka kerja yang ada ialah 1.1.14. Baru -baru ini, Yii 2.0 disediakan, jadi anda boleh mula menggunakannya dalam pengeluaran.
Semasa kami menutupnya baru -baru ini ketika masih dalam status RC, ia hanya mencapai status pelepasan penuh, dan kami merasakan sudah tiba masanya untuk meninjau semula topik itu dengan beberapa sebab untuk memilihnya melalui alternatif.Takeaways Key
rangka kerja YII 2 mudah dipasang, menjimatkan masa pemaju dengan proses pemasangan dan konfigurasi yang mudah, dikendalikan menggunakan komposer.
- Rangka kerja menggunakan teknologi moden, beroperasi sebagai rangka kerja OOP yang tulen dan memanfaatkan ciri -ciri PHP lanjutan seperti pengikatan statik, kelas SPL dan antara muka, dan fungsi tanpa nama.
- yii 2 sangat diperluas, membolehkan hampir setiap komponen kerangka disesuaikan untuk memenuhi keperluan khusus.
- Rangka kerja ini menggalakkan ujian, yang diintegrasikan dengan ketat dengan codeception, rangka kerja ujian PHP yang memudahkan proses mencipta unit, fungsi, dan ujian penerimaan. Yii 2 memudahkan keselamatan dengan komponen aplikasi keselamatannya, yang mendedahkan beberapa kaedah untuk membantu dalam membuat aplikasi yang selamat. Ia juga termasuk kelas siap sedia untuk pengesahan dan kebenaran pengguna.
- 1. Mudah dipasang
Pemasangan dikendalikan menggunakan komposer. Jika anda ingin perihalan proses pemasangan, SitePoint baru -baru ini menerbitkan artikel hebat di sini. Saya cenderung untuk memihak menggunakan templat aplikasi asas, walaupun tapak saya mempunyai komponen depan dan backend berasingan. Sebaliknya, saya memilih untuk menggunakan modul untuk bahagian belakang laman web saya. (Modul Yii digambarkan sebagai aplikasi mini yang tinggal di dalam aplikasi utama anda).
nota
: Banyak rujukan direktori dalam contoh -contoh kemudian Gunakan struktur direktori dari template mudah. 2. Menggunakan teknologi moden
Yii adalah rangka kerja OOP yang tulen, dan mengambil kesempatan daripada beberapa ciri yang lebih maju PHP, termasuk pengikatan statik, kelas SPL dan antara muka, dan fungsi tanpa nama.Semua kelas adalah nama-nama, yang membolehkan anda memanfaatkan autoloader patuh PSR-4 mereka. Ini bermakna termasuk kelas HTML HTML YII adalah semudah:
Yii juga membolehkan anda menentukan alias untuk membantu memudahkan ruang nama anda. Dalam contoh di atas, pernyataan penggunaan itu akan memuatkan definisi kelas yang terletak secara lalai dalam direktori/vendor/yiisoft/yii2/pembantu. Alias ini ditakrifkan dalam kelas Baseyii pada baris 79:
<span>use yii<span>\helpers\Html</span>;</span>
Rangka kerja itu sendiri dipasang menggunakan komposer, seperti sambungannya. Malah proses penyebaran penerbitan semudah mencipta komposer.json anda sendiri, menganjurkan kod anda di GitHub, dan menyenaraikan pelanjutan anda pada pembungkus.
3. Sangat extensibleyii adalah seperti saman yang kelihatan hebat dari rak, tetapi juga sangat mudah untuk disesuaikan agar sesuai dengan keperluan anda. Hampir setiap komponen rangka kerja adalah extensible. Contoh mudah ialah penambahan ID badan yang unik untuk pandangan anda. (Sekiranya anda berminat untuk mengetahui mengapa anda mungkin mahu melakukan ini, lihat artikel ini).
Pertama, saya akan membuat fail dalam direktori appcomponents saya dengan nama view.php, dan tambahkan yang berikut:
<span>public static $aliases = ['@yii' => __DIR__];</span>Kemudian, dalam fail susun atur utama saya (appviewslayoutsmain.php), saya akan menambah yang berikut ke tag badan html saya:
<span>namespace app<span>\components</span>; </span> <span>class View extends yii<span>\web\View</span> { </span> <span>public $bodyId; </span> <span>/* Yii allows you to add magic getter methods by prefacing method names with "get" */ </span> <span>public function getBodyIdAttribute() { </span> <span>return ($this->bodyId != '') ? '' : ''; </span> <span>} </span> <span>}</span>Dan akhirnya, saya akan menambah yang berikut ke fail konfigurasi utama saya untuk membiarkan Yii tahu menggunakan kelas paparan lanjutan saya dan bukannya lalai sendiri:
<span><span><span> <span><span>=$this->BodyIdAttribute?></span></span>></span></span></span>4. Menggalakkan ujian
Yii diintegrasikan dengan ketat dengan codeception. Codeception adalah rangka kerja ujian PHP yang hebat yang membantu memudahkan proses membuat ujian unit, fungsi dan penerimaan untuk permohonan anda. Kerana anda menulis ujian automatik untuk semua aplikasi anda, bukan?
Pelanjutan codeception menjadikannya mudah untuk mengkonfigurasi permohonan anda semasa ujian. Cukup edit fail yang disediakan /tests/_config.php untuk mengkonfigurasi aplikasi ujian anda. Contohnya:
Menggunakan konfigurasi ini, yang berikut akan berlaku:
<span>return [ </span> <span>// ... </span> <span>'components' => [ </span> <span>// ... </span> <span>'view' => [ </span> <span>'class' => 'app\components\View' </span> <span>] </span> <span>] </span><span>];</span>
mana -mana e -mel yang dihantar semasa ujian fungsional dan penerimaan anda akan ditulis ke fail dan bukannya dihantar.
- URL dalam ujian anda akan mengambil format index.php/pengawal/tindakan daripada/pengawal/tindakan
- ujian anda akan menggunakan pangkalan data ujian anda, bukannya pangkalan data pengeluaran anda.
- Modul khas untuk rangka kerja YII juga wujud dalam codeception. Ia menambah beberapa kaedah ke kelas TestGuy, yang membantu anda bekerja dengan rekod aktif (YII's ORM) semasa ujian fungsional. Sebagai contoh, jika anda ingin melihat sama ada borang pendaftaran anda berjaya mencipta pengguna baru dengan nama pengguna "Testuser", anda boleh melakukan perkara berikut:
5. Memudahkan keselamatan
<span>return [ </span> <span>'components' => [ </span> <span>'mail' => [ </span> <span>'useFileTransport' => true, </span> <span>], </span> <span>'urlManager' => [ </span> <span>'showScriptName' => true, </span> <span>], </span> <span>'db' => [ </span> <span>'dsn' => 'mysql:host=localhost;dbname=mysqldb_test', </span> <span>], </span> <span>], </span><span>];</span>
Keselamatan adalah bahagian penting dari mana -mana aplikasi web, dan mujurlah yii mempunyai beberapa ciri hebat untuk membantu meringankan fikiran anda.
Yii dilengkapi dengan komponen aplikasi keselamatan yang mendedahkan beberapa kaedah untuk membantu membantu membuat aplikasi yang lebih selamat. Beberapa kaedah yang lebih berguna ialah:
- GeneratePasswordHash: Menjana hash selamat dari kata laluan dan garam rawak. Kaedah ini membuat garam rawak untuk anda, dan kemudian mencipta hash dari rentetan yang dibekalkan menggunakan fungsi Crypt PHP.
- ValidatePassword: Ini adalah fungsi pendamping untuk menghasilkan PasswordHash, dan membolehkan anda menyemak sama ada pengguna yang dibekalkan kata laluan sepadan dengan hash yang disimpan.
- generaterandomkey: membolehkan anda membuat rentetan rawak dari mana -mana panjang
YII secara automatik memeriksa token CSRF yang sah pada semua kaedah permintaan HTTP yang tidak selamat (meletakkan, pos, padam), dan akan menjana dan mengeluarkan token apabila anda menggunakan kaedah ActiveForm :: Begin () untuk membuat tag borang pembukaan anda. Ciri ini boleh dilumpuhkan dengan mengedit fail konfigurasi utama anda untuk memasukkan yang berikut:
<span>use yii<span>\helpers\Html</span>;</span>
Untuk melindungi terhadap XSS, YII menyediakan satu lagi kelas penolong yang dipanggil htmlpurifier. Kelas ini mempunyai satu kaedah statik yang dinamakan proses, dan akan menapis output anda menggunakan perpustakaan penapis popular dengan nama yang sama.
Yii juga termasuk kelas siap sedia untuk pengesahan dan kebenaran pengguna. Kebenaran dipecah menjadi dua jenis: ACF (Penapis Kawalan Akses) dan RBAC (Kawalan Akses Berasaskan Peranan).
lebih mudah dari kedua -duanya adalah ACF, dan dilaksanakan dengan menambahkan yang berikut kepada kaedah tingkah laku pengawal anda:
<span>public static $aliases = ['@yii' => __DIR__];</span>
Kod terdahulu memberitahu DefaultControllerto membolehkan pengguna tetamu mengakses tindakan log masuk dan melihat, tetapi bukan tindakan membuat. (? Adakah alias untuk pengguna tanpa nama, dan @ merujuk kepada pengguna yang disahkan).
RBAC adalah kaedah yang lebih kuat untuk menentukan pengguna mana yang boleh melakukan tindakan tertentu sepanjang aplikasi anda. Ia melibatkan membuat peranan untuk pengguna anda, menentukan keizinan untuk aplikasi anda, dan kemudian membolehkan kebenaran tersebut untuk peranan yang dimaksudkan. Anda boleh menggunakan kaedah ini jika anda ingin membuat peranan moderator, dan membenarkan semua pengguna yang diberikan kepada peranan ini untuk meluluskan artikel.
anda juga boleh menentukan peraturan menggunakan RBAC, yang membolehkan anda, di bawah syarat -syarat tertentu, untuk memberikan akses kepada aspek tertentu permohonan anda. Sebagai contoh, anda boleh membuat peraturan yang membolehkan pengguna mengedit artikel mereka sendiri, tetapi bukan yang dicipta oleh orang lain.
6. Memendekkan masa pembangunanKebanyakan projek melibatkan sejumlah tugas berulang -ulang yang tidak ada yang mahu membuang masa. Yii memberi kami beberapa alat untuk membantu anda menghabiskan lebih sedikit masa untuk tugas tersebut, dan lebih banyak masa menyesuaikan permohonan anda untuk memenuhi keperluan pelanggan anda.
Salah satu alat yang paling berkuasa ini dipanggil "GII". GII adalah alat perancah kod berasaskan web, yang membolehkan anda membuat templat kod dengan cepat untuk:
- Model
- Pengawal
- Borang
- modul
- sambungan
- tindakan dan pandangan pengawal crud
<span>use yii<span>\helpers\Html</span>;</span>
Ini memastikan bahawa GII hanya akan dimuatkan apabila pembolehubah persekitaran YII ditetapkan kepada pembangunan , dan ia hanya akan dimuat apabila diakses melalui localhost.
Sekarang mari kita lihat penjana model:
Terdapat juga beberapa alat baris arahan yang tersedia untuk membantu membuat templat kod untuk migrasi pangkalan data, terjemahan mesej (i18n) dan lekapan pangkalan data untuk ujian automatik anda. Sebagai contoh, anda boleh membuat fail penghijrahan pangkalan data baru dengan arahan ini:
<span>public static $aliases = ['@yii' => __DIR__];</span>Ini akan mewujudkan templat penghijrahan baru dalam {appdir}/migrasi yang kelihatan seperti ini:
<span>namespace app<span>\components</span>; </span> <span>class View extends yii<span>\web\View</span> { </span> <span>public $bodyId; </span> <span>/* Yii allows you to add magic getter methods by prefacing method names with "get" */ </span> <span>public function getBodyIdAttribute() { </span> <span>return ($this->bodyId != '') ? '' : ''; </span> <span>} </span> <span>}</span>Jadi katakan saya mahu menambah beberapa lajur ke meja ini. Saya hanya akan menambah yang berikut kepada kaedah UP:
<span><span><span> <span><span>=$this->BodyIdAttribute?></span></span>></span></span></span>Dan kemudian pastikan saya dapat membalikkan penghijrahan, saya akan mengedit kaedah Down:
<span>return [ </span> <span>// ... </span> <span>'components' => [ </span> <span>// ... </span> <span>'view' => [ </span> <span>'class' => 'app\components\View' </span> <span>] </span> <span>] </span><span>];</span>Membuat jadual hanya melibatkan menjalankan arahan pada baris arahan:
<span>return [ </span> <span>'components' => [ </span> <span>'mail' => [ </span> <span>'useFileTransport' => true, </span> <span>], </span> <span>'urlManager' => [ </span> <span>'showScriptName' => true, </span> <span>], </span> <span>'db' => [ </span> <span>'dsn' => 'mysql:host=localhost;dbname=mysqldb_test', </span> <span>], </span> <span>], </span><span>];</span>dan untuk mengeluarkan jadual:
<span>$I->amOnPage('register'); </span><span>$I->fillField('username', 'testuser'); </span><span>$I->fillField('password', 'qwerty'); </span><span>$I->click('Register'); </span><span>$I->seeRecord('app\models\User', array('name' => 'testuser'));</span>7. Mudah untuk menyesuaikan diri dengan prestasi yang lebih baik
Semua orang tahu bahawa laman web yang perlahan mencipta pengguna yang tidak puas hati, jadi Yii memberikan anda beberapa alat untuk membantu anda memerah lebih cepat dari aplikasi anda.
Semua komponen cache Yii diperluaskan dari Yii/cache/cache, yang membolehkan anda memilih mana -mana sistem caching yang anda inginkan semasa menggunakan API biasa. Anda juga boleh mendaftarkan pelbagai komponen cache secara serentak. Yii kini menyokong pangkalan data dan sistem fail, serta APC, Memcache, Redis, Wincache, Xcache dan Zend Data Cache.
Secara lalai, jika anda menggunakan rekod aktif maka YII menjalankan pertanyaan tambahan untuk menentukan skema jadual yang terlibat dalam menghasilkan model anda. Anda boleh menetapkan aplikasi untuk cache skema ini dengan mengedit fail konfigurasi utama anda seperti berikut:
<span>return [ </span> <span>'components' => [ </span> <span>'request' => [ </span> <span>'enableCsrfValidation' => false, </span> <span>] </span> <span>];</span>Akhirnya, Yii mempunyai alat baris arahan untuk memudahkan minifikasi aset frontend. Cukup jalankan arahan berikut untuk menghasilkan templat konfigurasi:
<span>use yii<span>\filters\AccessControl</span>; </span> <span>class DefaultController extends Controller { </span> <span>// ... </span> <span>public function behaviors() { </span> <span>return [ </span> <span>// ... </span> <span>'class' => AccessControl<span>::</span>className(), </span> <span>'only' => ['create', 'login', 'view'], </span> <span>'rules' => [ </span> <span>[ </span> <span>'allow' => true, </span> <span>'actions' => ['login', 'view'], </span> <span>'roles' => ['?'] </span> <span>], </span> <span>[ </span> <span>'allow' => true, </span> <span>'actions' => ['create'], </span> <span>'roles' => ['@'] </span> <span>] </span> <span>] </span> <span>]; </span> <span>} </span> <span>// ... </span><span>}</span>kemudian edit konfigurasi untuk menentukan alat yang anda inginkan untuk anda melakukan minifikasi anda (mis. Penutup penutup, pemampat Yui, atau uglifyjs). Templat konfigurasi yang dihasilkan akan kelihatan seperti ini:
<span>if (YII_ENV_DEV) { </span> <span>// ... </span> <span>$config['modules']['gii'] = [ </span> <span>'class' => 'yii\gii\Module', </span> <span>'allowedIPs' => ['127.0.0.1', '::1'] </span> <span>] </span><span>}</span>Seterusnya, jalankan arahan konsol ini untuk melaksanakan mampatan.
yii migrate<span>/create create_user_table</span>Dan akhirnya, edit fail konfigurasi aplikasi web anda untuk menggunakan aset termampat.
<span><span><?php </span></span><span> </span><span> <span>use yii<span>\db\Schema</span>; </span></span><span> </span><span> <span>class m140924_153425_create_user_table extends <span>\yii\db\Migration</span> </span></span><span> <span>{ </span></span><span> <span>public function up() </span></span><span> <span>{ </span></span><span> </span><span> <span>} </span></span><span> </span><span> <span>public function down() </span></span><span> <span>{ </span></span><span> <span>echo "m140924_153425_create_user_table cannot be reverted.\n"; </span></span><span> </span><span> <span>return false; </span></span><span> <span>} </span></span><span><span>}</span></span></span>
NOTA: Anda perlu memuat turun dan memasang alat luaran ini secara manual.
Kesimpulan
Seperti rangka kerja yang baik, Yii membantu anda membuat aplikasi web moden dengan cepat, dan pastikan mereka berfungsi dengan baik. Ia mendorong anda untuk membuat laman web yang selamat dan boleh diuji dengan melakukan banyak mengangkat berat untuk anda. Anda boleh menggunakan kebanyakan ciri -cirinya dengan mudah seperti yang disediakan, atau anda boleh mengubah suai setiap satu untuk memenuhi keperluan anda. Saya benar -benar menggalakkan anda untuk menyemaknya untuk projek web anda yang seterusnya!
adakah anda telah mencuba yii 2? Adakah anda? Marilah kita tahu!
Soalan Lazim (Soalan Lazim) Mengenai Rangka Kerja Yii 2
Kenapa rangka kerja Yii 2 dianggap sangat extensible? Ini bermakna jika pemaju perlu menyesuaikan cara rangka kerja mengendalikan tugas -tugas tertentu, mereka boleh melakukannya tanpa perlu mengubah suai kod teras secara langsung. Ini adalah kelebihan yang ketara kerana ia membolehkan tahap fleksibiliti dan kebolehsuaian yang tinggi, menjadikannya lebih mudah untuk menyesuaikan rangka kerja untuk memenuhi keperluan projek tertentu. > Rangka kerja Yii 2 memastikan prestasi tinggi melalui teknik pemuatan malas yang cekap. Ini bermakna ia hanya memuat komponen yang diperlukan untuk proses tertentu, dengan itu mengurangkan beban pada pelayan dan meningkatkan prestasi keseluruhan aplikasi. Di samping itu, Yii 2 juga menyokong caching data, yang seterusnya meningkatkan prestasinya. . Ia menyediakan alat terbina dalam untuk pengesahan input, penapisan output, pencegahan suntikan SQL, dan pencegahan skrip lintas tapak (XSS). Ciri -ciri ini menjadikannya pilihan yang selamat untuk membangunkan aplikasi web yang perlu mengendalikan data sensitif. alat, gii. GII membolehkan pemaju dengan cepat menjana kod untuk model, pengawal, bentuk, modul, dan sambungan. Ini mengurangkan masa yang diperlukan untuk menulis kod boilerplate, yang membolehkan pemaju memberi tumpuan lebih kepada logik perniagaan. direka untuk berfungsi dengan lancar dengan kod pihak ketiga. Ia menggunakan Pengurus Ketergantungan Komposer, yang memudahkan untuk mengintegrasikan perpustakaan dan pakej pihak ketiga ke dalam aplikasi Yii 2 anda. mempunyai sistem pengendalian ralat dan pembalakan yang komprehensif. Ia boleh mengendalikan kedua -dua kesilapan dan pengecualian PHP, dan ia menyediakan pelbagai sasaran pembalakan, termasuk fail, e -mel, dan konsol penyemak imbas. Ini menjadikan lebih mudah untuk menyahpepijat dan membetulkan isu dalam aplikasi anda.
adalah rangka kerja YII 2 yang sesuai untuk membangunkan aplikasi web yang kompleks? Ia menyediakan pelbagai alat dan ciri -ciri, seperti seni bina MVC, lapisan abstraksi pangkalan data, dan sokongan caching, yang menjadikannya lebih mudah untuk membina dan mengekalkan aplikasi yang kompleks.
rangka kerja YII 2 menyediakan sokongan yang luas untuk pengantarabangsaan (I18N). Ia termasuk ciri -ciri untuk pemformatan tarikh dan masa, pemformatan nombor, dan terjemahan mesej, menjadikannya lebih mudah untuk membangunkan aplikasi untuk penonton global. > Rangka kerja Yii 2 mempunyai komuniti pemaju yang besar dan aktif. Terdapat banyak forum, blog, dan tutorial yang tersedia dalam talian di mana anda boleh mendapatkan bantuan dan nasihat. Di samping itu, laman web rasmi YII menyediakan dokumentasi yang komprehensif dan panduan pengguna. prestasi, ciri keselamatan, dan kelanjutan. Ia juga menyokong perkembangan pesat, menjadikannya pilihan yang popular untuk kedua-dua projek kecil dan berskala besar. Walau bagaimanapun, rangka kerja terbaik untuk projek bergantung kepada keperluan khusus dan kepakaran pasukan pembangunan.Atas ialah kandungan terperinci 7 Sebab Memilih Rangka Kerja Yii 2. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Phpidentifierauser'sSessionusingSessionCookiesandSessionIds.1) whensession_start () ISCALLED, phpGeneratesAuniquesessionIdstoredinacookienamedPhpsessidontheUserer'sBrowser.2) ThisIdallowsPhptoretRievesSessionDataFromtheserver.

Keselamatan sesi PHP boleh dicapai melalui langkah -langkah berikut: 1. Gunakan session_regenerate_id () untuk menjana semula ID sesi apabila pengguna log masuk atau merupakan operasi penting. 2. Sulitkan ID sesi penghantaran melalui protokol HTTPS. 3. Gunakan session_save_path () untuk menentukan direktori selamat untuk menyimpan data sesi dan menetapkan kebenaran dengan betul.

PhpsessionFileSarestoredIntHedirectorySpecifiedBySession.save_path, biasanya/tmponunix-likesystemsorc: \ windows \ temponwindows.tocustomethis: 1) usession_save_path ()

ToretrievedataFromaphpsession, startTheSessionWithSsion_start () andaccessVariablesInthe $ _SessionArray.Forexample: 1) startTheSession: session_start ()

Langkah -langkah untuk membina sistem keranjang belanja yang cekap menggunakan sesi termasuk: 1) Memahami definisi dan fungsi sesi. Sesi ini adalah mekanisme penyimpanan sisi pelayan yang digunakan untuk mengekalkan status pengguna merentasi permintaan; 2) melaksanakan pengurusan sesi asas, seperti menambah produk ke keranjang belanja; 3) memperluas penggunaan lanjutan, menyokong pengurusan kuantiti produk dan penghapusan; 4) Mengoptimumkan prestasi dan keselamatan, dengan berterusan data sesi dan menggunakan pengecam sesi yang selamat.

Artikel ini menerangkan cara membuat, melaksanakan, dan menggunakan antara muka dalam PHP, memberi tumpuan kepada manfaat mereka untuk organisasi kod dan penyelenggaraan.

Artikel ini membincangkan perbezaan antara crypt () dan password_hash () dalam php untuk hashing kata laluan, memberi tumpuan kepada pelaksanaan, keselamatan, dan kesesuaian untuk aplikasi web moden.

Artikel membincangkan mencegah skrip lintas tapak (XSS) dalam PHP melalui pengesahan input, pengekodan output, dan menggunakan alat seperti OWASP ESAPI dan pembersih HTML.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

Dreamweaver CS6
Alat pembangunan web visual

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.
