Tiada sesiapa di China yang menggunakan versi terkini. Tidakkah anda perasan perubahan logik ini? Adakah anda tidak menyemak log masuk pengguna dalam pembina (anda menghadapi masalah jika anda tidak perasan)?
Bantu saya membaca jawapan rasmi ini: https://github.com/laravel/fr...
**Bahasa Inggeris saya tidak bagus! sila jelaskan! Peningkatan yang sangat penting dalam laravel5.3
Mengapa anda melakukan ini?
Bagaimana saya harus menulis logik baharu? **
Sebab mengapa saya memerlukan peningkatan ini, dan bagaimana saya boleh menyelesaikan logik saya!
Saya ragu bahawa ini akan membatalkan __construct
Adalah lebih munasabah bahawa middleware kecuali perlu ditambahkan pada middleware sebagai atribut!
protected $except =['login','register','oauth_callback'];
Kusut: Rasanya tidak munasabah untuk menambah ini (adalah tidak munasabah jika berbilang kumpulan memanggil ini), jangan tambah ini dan tulis untuk satu login_ _construct berasa teruk sekali lagi!
Jawapan semasa: Yang di tingkat satu sebenarnya OK, tetapi yang ini jauh lebih elegan
Penerangan CallAction: https://laravel.com/api/maste...
Laravel 5.3, yang merupakan yang terbaharu, dikemas kini setiap kali
Kini terdapat 3, middleware, pengawal dan pembina ini
Terdapat 2 fungsi yang mesti digunakan dalam pembina. Dan ia mesti dilog masuk. Instantiation tidak dibenarkan tanpa log masuk.
Pembina:
Perisian tengah:
Kaedah:
Keluaran:
Dalam laluan
Perisian tengah tersuai
Mengikut keluaran logik laravel:
2 Pembina
1 Middleware
3 Ini adalah promosi
Tetapi dalam kes ini, pembina dibuat instantiated tanpa log masuk, dan tidak kira di mana middleware diletakkan, pembina akan dijalankan dahulu dan kemudian middleware
Hasil yang saya inginkan ialah:
1 middleware, tentukan log masuk, tiada Jump selepas log masuk
2Pembina, dibuat seketika selepas log masuk
3 Ini ialah promosi, laksanakan promosi!
Bagaimana untuk mengubah suai logik? Saya perlu log masuk sebelum menghubungi kaedah awam Jika saya tidak log masuk, saya akan melompat untuk log masuk (tidak termasuk pendaftaran dan log masuk)!
Masalah yang berkemungkinan ialah Laravel mesti menjalankan pembina terlebih dahulu, dan kemudian perisian tengah boleh dipanggil
Kemudian apakah jenis logik yang harus saya gunakan untuk mencapai keperluan saya?
$this->wx_api();
$this->agent();
Dua yang biasa ini biasanya ditulis dalam __construct!
Saya masih keliru, mengikut akal sehat, jika ia ditakrifkan dalam penghala, kelas penghakiman mempunyai kaedah ini, dan kemudian middleware dipanggil pada masa ini, dan kemudian pembina dilaksanakan, dan kemudian kaedahnya! Bagaimana proses sedemikian boleh berlaku!
Untuk masalah kaedah kasar, lihat perkara berikut (anda tidak boleh melompat dalam pembina, dan menulis gema dan keluar dalam laravel akan menjadi sangat hodoh. Bagaimanapun, saya tidak tahan. Demonstrasi di atas adalah semata-mata untuk tontonan!)
http://laravelacademy.org/pos...
Setelah memikirkannya dengan teliti, saya mendapati bahawa ini dengan sempurna memusnahkan keperluan pemisahan tanggungjawab berorientasikan objek dan berjaya meningkatkan tahap gandingan
Disebabkan ayat ini, saya fikir Gunakan perisian tengah! (Yang mana lebih baik? Saya seorang pemula dan saya tidak tahu bagaimana untuk mengatakannya!)
Laravel 5.3 ialah kaedah membina Middleware -> Melaksanakan pemegang middleware -> Pengawal Pelaksana ->
Saya menggunakan versi 5.3 terbaharu di China
5.3 sememangnya telah mengubah logik pelaksanaan middleware
路由匹配 - 读取路由中间件 - 实例化Controller - 读取Controller中间键 - 执行中间件 - 执行action
个人不鼓励在Controller的构造函数中初始化方法,除了使用中间件调用之外,不要做任何逻辑判断的事情。
重写 CallAction 在 CallAction中逻辑判断
因为任何一个路由的匹配都会使用
Secara peribadi, tidak digalakkan untuk memulakan kaedah dalam pembina Pengawal Jangan lakukan sebarang pertimbangan logik kecuali menggunakan panggilan perisian tengah. Oleh kerana mana-mana padanan laluan akan menggunakanCallAction
CallAction
untuk memanggil kaedah dalam Pengawal🎜 🎜🎜Dalam versi di bawah 5.3, perisian tengah akan dilaksanakan terlebih dahulu, dan kemudian Pengawal akan dimulakan Ini adalah perbezaan terbesar daripada 5.3. 🎜🎜Pembina harus dilaksanakan terlebih dahulu, jadi nampaknya tidak ada yang salah dengannya. . .
Saya melihat melalui dokumentasi laravel5.3 Kini middleware dilaksanakan selepas pembinaan sama ada anda bertukar kepada versi lain yang lebih rendah, atau anda tidak menggunakan middleware, atau anda menulis semua kaedah untuk dipanggil oleh pembina asal anda dalam middleware. .
Sebagai contoh: (Nota: Ciri ini memerlukan laravel versi 5.3.4 ke atas)