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
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.
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 extensiblePertama, saya akan membuat fail dalam direktori appcomponents saya dengan nama view.php, dan tambahkan yang berikut:
<span>public static $aliases = ['@yii' => __DIR__];</span>
<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>
<span><span><span><body</span> <span><span><?=$this->BodyIdAttribute?></span></span>></span></span>
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.
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>
Yii dilengkapi dengan komponen aplikasi keselamatan yang mendedahkan beberapa kaedah untuk membantu membantu membuat aplikasi yang lebih selamat. Beberapa kaedah yang lebih berguna ialah:
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 pembangunanSalah satu alat yang paling berkuasa ini dipanggil "GII". GII adalah alat perancah kod berasaskan web, yang membolehkan anda membuat templat kod dengan cepat untuk:
<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>
<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>
<span><span><span><body</span> <span><span><?=$this->BodyIdAttribute?></span></span>></span></span>
<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>
<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>
<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>
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>
<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>
<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>
yii migrate<span>/create create_user_table</span>
<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>
NOTA: Anda perlu memuat turun dan memasang alat luaran ini secara manual.
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!
Atas ialah kandungan terperinci 7 Sebab Memilih Rangka Kerja Yii 2. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!