Rumah > pembangunan bahagian belakang > tutorial php > 7 Sebab Memilih Rangka Kerja Yii 2

7 Sebab Memilih Rangka Kerja Yii 2

Jennifer Aniston
Lepaskan: 2025-02-19 09:37:13
asal
614 orang telah melayarinya

7 Sebab Memilih Rangka Kerja Yii 2

lewat tahun lepas, SitePoint menerbitkan artikel yang menonjolkan kerangka PHP teratas. Diikat untuk nombor empat tempat ialah rangka kerja Yii (diucapkan

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
untuk pemaju web, masa adalah wang, dan tiada siapa yang mahu menghabiskan masa berharga mereka pada proses pemasangan dan konfigurasi yang rumit.

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>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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 extensible

yii 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>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
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>
Salin selepas log masuk
Salin selepas log masuk
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><body</span> <span><span><?=$this->BodyIdAttribute?></span></span>></span></span>
Salin selepas log masuk
Salin selepas log masuk
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>
Salin selepas log masuk
Salin selepas log masuk

mana -mana e -mel yang dihantar semasa ujian fungsional dan penerimaan anda akan ditulis ke fail dan bukannya dihantar.
  1. URL dalam ujian anda akan mengambil format index.php/pengawal/tindakan daripada/pengawal/tindakan
  2. ujian anda akan menggunakan pangkalan data ujian anda, bukannya pangkalan data pengeluaran anda.
  3. 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>
Salin selepas log masuk
Salin selepas log masuk

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>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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 pembangunan

Kebanyakan 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
GII sangat boleh dikonfigurasikan. Anda boleh menetapkannya hanya memuatkan dalam persekitaran tertentu. Cukup edit fail konfigurasi web anda seperti berikut:

<span>use yii<span>\helpers\Html</span>;</span>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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:

7 Sebab Memilih Rangka Kerja Yii 2

Nama jadual menggunakan widget Typeahead untuk cuba meneka jadual mana model anda dikaitkan dengan, dan semua bidang mempunyai alat rollover untuk mengingatkan anda bagaimana untuk mengisi mereka. Anda boleh pratonton kod sebelum anda meminta GII untuk menghasilkannya, dan semua templat kod sepenuhnya disesuaikan.

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>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
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>
Salin selepas log masuk
Salin selepas log masuk
Jadi katakan saya mahu menambah beberapa lajur ke meja ini. Saya hanya akan menambah yang berikut kepada kaedah UP:

<span><span><span><body</span> <span><span><?=$this->BodyIdAttribute?></span></span>></span></span>
Salin selepas log masuk
Salin selepas log masuk
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>
Salin selepas log masuk
Salin selepas log masuk
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>
Salin selepas log masuk
Salin selepas log masuk
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>
Salin selepas log masuk
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>
Salin selepas log masuk
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>
Salin selepas log masuk
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>
Salin selepas log masuk
Seterusnya, jalankan arahan konsol ini untuk melaksanakan mampatan.

yii migrate<span>/create create_user_table</span>
Salin selepas log masuk
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>
Salin selepas log masuk

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan