亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Jadual Kandungan
Skop Pertanyaan Global
#bagaimana untuk membuat skop pertanyaan global
#menggunakan skop pertanyaan global
Skop Pertanyaan Global #Anonymous
#gnore scope query query
#precaations untuk skop pertanyaan global
menguji skop pertanyaan tempatan
Rumah pembangunan bahagian belakang tutorial php Belajar menguasai skop pertanyaan di laravel

Belajar menguasai skop pertanyaan di laravel

Mar 06, 2025 am 02:28 AM

<p> <img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/174119929536701.jpg" class="lazy" alt="Learn to master Query Scopes in Laravel"> <s> </s></p> Apabila membina aplikasi Laravel, anda mungkin perlu menulis pertanyaan dengan kekangan yang digunakan di beberapa tempat di seluruh aplikasi. Mungkin anda sedang membina aplikasi multi-penyewa dan anda perlu menambah kekangan <p> kepada pertanyaan untuk ditapis oleh pasukan pengguna. Atau mungkin anda sedang membina blog dan anda perlu menambah kekangan <code>where</code> ke pertanyaan untuk menapis jika pos blog telah diterbitkan. <code>where</code> </p> Di Laravel, kita boleh menggunakan skop pertanyaan untuk membantu kita mengekalkan kekangan ini dengan kemas di satu tempat dan menggunakannya semula. <p> </p> Dalam artikel ini, kami akan mengkaji skop pertanyaan tempatan dan skop pertanyaan global. Kami akan mempelajari perbezaan antara kedua -dua, bagaimana untuk membuat skop pertanyaan anda sendiri, dan bagaimana menulis ujian untuk mereka. <p> </p> Selepas membaca artikel ini, anda harus dapat menggunakan skop pertanyaan dengan yakin dalam aplikasi Laravel anda. <p> </p> Apakah skop pertanyaan? <h1> </h1> <hr> Skop pertanyaan membolehkan anda menentukan kekangan dalam pertanyaan yang fasih dengan cara yang boleh diguna semula. Mereka biasanya ditakrifkan sebagai kaedah pada model Laravel, atau sebagai kelas yang melaksanakan <p> antara muka. <code>IlluminateDatabaseEloquentScope</code> </p> Bukan sahaja mereka sesuai untuk menentukan logik yang boleh diguna semula di satu tempat, tetapi mereka juga boleh membuat kod anda lebih mudah dibaca dengan menyembunyikan kekangan pertanyaan kompleks selepas panggilan fungsi mudah. <p> </p> julat pertanyaan dibahagikan kepada dua jenis: <p> </p> <ul> julat pertanyaan tempatan - anda mesti menggunakan julat ini secara manual untuk pertanyaan anda. <li> </li> Skop Pertanyaan Global - Secara lalai, julat ini digunakan untuk semua pertanyaan pada model, dengan syarat pertanyaan itu didaftarkan. <li> </li> </ul> Jika anda pernah menggunakan ciri "Delete Soft" yang dibina di Laravel, anda mungkin telah menggunakan skop pertanyaan tanpa disedari. Laravel menggunakan skop pertanyaan tempatan untuk memberi anda kaedah seperti <p> dan <code>withTrashed</code> pada model. Ia juga menggunakan skop pertanyaan global untuk menambah kekangan <code>onlyTrashed</code> secara automatik kepada semua pertanyaan pada model supaya rekod yang dipadam lembut tidak dikembalikan secara lalai dalam pertanyaan. <code>whereNull('deleted_at')</code> </p> Mari lihat cara membuat dan menggunakan skop pertanyaan tempatan dan skop pertanyaan global dalam aplikasi Laravel. <p> </p> Skop pertanyaan tempatan <h1> </h1> <hr> Skop pertanyaan tempatan ditakrifkan sebagai kaedah pada model fasih, yang membolehkan anda menentukan kekangan yang boleh digunakan secara manual untuk model pertanyaan. <p> </p> Katakan kami sedang membina aplikasi blog dengan panel admin. Di panel admin, kami mempunyai dua halaman: satu untuk penyenaraian catatan blog yang diterbitkan dan yang lain untuk menyenaraikan catatan blog yang tidak diterbitkan. <p></p> <p> kami mengandaikan bahawa pos blog diakses menggunakan model <code>AppModelsArticle</code> dan bahawa jadual pangkalan data mempunyai lajur kosong <code>published_at</code> untuk menyimpan masa penerbitan pos blog. Jika <code>published_at</code> disenaraikan pada masa lalu, jawatan blog dianggap telah diterbitkan. Jika <code>published_at</code> disenaraikan pada masa akan datang atau <code>null</code>, jawatan blog dianggap tidak diterbitkan. </p> <p> Untuk mendapatkan catatan blog yang diterbitkan, kami boleh menulis pertanyaan berikut: </p> <pre class="brush:php;toolbar:false"><code>use App\Models\Article; $publishedPosts = Article::query() ->where('published_at', '<', now()) ->get();</code></pre> <p> Untuk mendapatkan catatan blog yang tidak diterbitkan, kami boleh menulis pertanyaan berikut: </p> <pre class="brush:php;toolbar:false"><code>use App\Models\Article; use Illuminate\Contracts\Database\Eloquent\Builder; $unpublishedPosts = Article::query() ->where(function (Builder $query): void { $query->whereNull('published_at') ->orWhere('published_at', '>', now()); }) ->get();</code></pre> <p> pertanyaan di atas tidak begitu rumit. Tetapi, katakan kami menggunakannya di beberapa tempat di seluruh aplikasi. Oleh kerana bilangan kejadian meningkat, kemungkinan kita membuat kesilapan atau lupa untuk mengemas kini pertanyaan di satu tempat semakin meningkat. Sebagai contoh, pemaju secara tidak sengaja boleh menggunakan <code>>=</code> bukannya <code><</code> untuk memohon catatan blog yang diterbitkan. Sebagai alternatif, logik untuk menentukan sama ada catatan blog telah diterbitkan mungkin berubah dan kita perlu mengemas kini semua pertanyaan. </p> <p> Ini adalah di mana skop pertanyaan sangat berguna. Oleh itu, mari kita mengatur pertanyaan kami dengan membuat skop pertanyaan tempatan pada model <code>AppModelsArticle</code>. </p> <p> Skop pertanyaan tempatan ditakrifkan dengan membuat kaedah yang bermula dengan <code>scope</code> dan berakhir dengan nama skop yang diharapkan. Sebagai contoh, kaedah yang dinamakan <code>scopePublished</code> akan membuat julat <code>published</code> pada model. Kaedah ini harus menerima contoh <code>IlluminateContractsDatabaseEloquentBuilder</code> dan mengembalikan contoh <code>IlluminateContractsDatabaseEloquentBuilder</code>. </p> <p> kami menambah kedua -dua julat ke model <code>AppModelsArticle</code>: </p> <pre class="brush:php;toolbar:false"><code>declare(strict_types=1); namespace App\Models; use Illuminate\Contracts\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; final class Article extends Model { public function scopePublished(Builder $query): Builder { return $query->where('published_at', '<', now()); } public function scopeNotPublished(Builder $query): Builder { return $query->where(function (Builder $query): Builder { return $query->whereNull('published_at') ->orWhere('published_at', '>', now()); }); } // ... }</code> </p> <p> Seperti yang kita lihat dalam contoh di atas, kami memindahkan kekangan <code>where</code> dari pertanyaan sebelumnya ke dalam dua kaedah berasingan: <code>scopePublished</code> dan <code>scopeNotPublished</code>. Sekarang kita boleh menggunakan julat ini dalam pertanyaan kami seperti ini: </p> <pre class="brush:php;toolbar:false"><code>use App\Models\Article; $publishedPosts = Article::query() ->published() ->get(); $unpublishedPosts = Article::query() ->notPublished() ->get();</code></pre> <p> Dalam pendapat peribadi saya, saya dapati pertanyaan ini lebih mudah dibaca dan difahami. Ini juga bermakna bahawa jika kita perlu menulis sebarang pertanyaan dengan kekangan yang sama pada masa akan datang, kita boleh menggunakan semula skop ini. </p> <h1 id="Skop-Pertanyaan-Global"> Skop Pertanyaan Global </h1> <hr> <p> Skop pertanyaan global melaksanakan fungsi yang serupa dengan skop pertanyaan tempatan. Walau bagaimanapun, ia tidak digunakan secara manual berdasarkan pertanyaan demi pertanyaan, tetapi secara automatik terpakai kepada semua pertanyaan pada model. </p> <p> Seperti yang telah kami sebutkan tadi, fungsi terbina dalam "Soft Delete" terbina dalam <code>IlluminateDatabaseEloquentSoftDeletingScope</code> skop pertanyaan global. Julat ini secara automatik menambah kekangan <code>whereNull('deleted_at')</code> kepada semua pertanyaan pada model. Jika anda berminat untuk memahami bagaimana ia berfungsi, anda boleh menyemak kod sumber di GitHub di sini. </p> <p> Sebagai contoh, katakan anda sedang membina aplikasi blog multi-penyewa dengan panel admin. Anda mungkin hanya mahu membenarkan pengguna melihat artikel yang dimiliki oleh pasukan mereka. Jadi anda mungkin menulis pertanyaan seperti ini: </p> <pre class="brush:php;toolbar:false"><code>use App\Models\Article; $publishedPosts = Article::query() ->where('published_at', '<', now()) ->get();</code></pre> <p> Pertanyaan ini bagus, tetapi mudah lupa untuk menambah kekangan <code>where</code>. Jika anda menulis pertanyaan lain dan lupa untuk menambah kekangan, anda akan berakhir dengan ralat dalam aplikasi anda yang akan membolehkan pengguna berinteraksi dengan artikel yang bukan sebahagian daripada pasukan mereka. Sudah tentu, kami tidak mahu ini berlaku! </p> <p> Untuk mengelakkan ini, kita boleh membuat skop global yang kita boleh secara automatik memohon kepada semua pertanyaan model <code>AppModelArticle</code> kami. </p> <h3 id="bagaimana-untuk-membuat-skop-pertanyaan-global">#bagaimana untuk membuat skop pertanyaan global </h3> <p> Mari buat skop pertanyaan global yang menapis semua pertanyaan oleh lajur <code>team_id</code>. </p> <p> Sila ambil perhatian bahawa untuk tujuan artikel ini, kami menyimpan contohnya dengan mudah. Dalam aplikasi kehidupan sebenar, anda mungkin mahu menggunakan pendekatan yang lebih kuat untuk menangani situasi seperti pengguna tidak disahkan atau pengguna milik beberapa pasukan. Tetapi buat masa ini, mari kita simpan mudah supaya kita dapat memberi tumpuan kepada konsep skop pertanyaan global. </p> <p> kami akan menjalankan perintah artisan berikut di terminal: </p> <pre class="brush:php;toolbar:false"><code>use App\Models\Article; use Illuminate\Contracts\Database\Eloquent\Builder; $unpublishedPosts = Article::query() ->where(function (Builder $query): void { $query->whereNull('published_at') ->orWhere('published_at', '>', now()); }) ->get();</code></pre> <p> Ini sepatutnya membuat fail <code>app/Models/Scopes/TeamScope.php</code> baru. Kami akan membuat beberapa kemas kini ke fail ini dan kemudian melihat kod siap: </p> <pre class="brush:php;toolbar:false"><code>declare(strict_types=1); namespace App\Models; use Illuminate\Contracts\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; final class Article extends Model { public function scopePublished(Builder $query): Builder { return $query->where('published_at', '<', now()); } public function scopeNotPublished(Builder $query): Builder { return $query->where(function (Builder $query): Builder { return $query->whereNull('published_at') ->orWhere('published_at', '>', now()); }); } // ... }</code></pre> <p> Dalam contoh kod di atas, kita dapat melihat bahawa kita mempunyai kelas baru yang melaksanakan antara muka <code>IlluminateDatabaseEloquentScope</code> dan mempunyai satu kaedah yang dipanggil <code>apply</code>. Inilah cara kita menentukan kekangan untuk memohon kepada pertanyaan model. </p> <p> Skop global kami kini tersedia. Kami boleh menambah ini kepada mana -mana model yang kami mahu menyempitkan pertanyaan kepada pasukan pengguna. </p> <p> mari kita memohon kepada model <code>AppModelsArticle</code>. </p> <h3 id="menggunakan-skop-pertanyaan-global">#menggunakan skop pertanyaan global </h3> <p> Terdapat beberapa cara untuk menggunakan skop global kepada model. Kaedah pertama ialah menggunakan atribut <code>IlluminateDatabaseEloquentAttributesScopedBy</code> pada model: </p> <pre class="brush:php;toolbar:false"><code>use App\Models\Article; $publishedPosts = Article::query() ->published() ->get(); $unpublishedPosts = Article::query() ->notPublished() ->get();</code></pre> <p> kaedah lain ialah menggunakan <code>booted</code> kaedah dalam kaedah <code>addGlobalScope</code> model: </p> <pre class="brush:php;toolbar:false"><code>use App\Models\Article; $articles = Article::query() ->where('team_id', Auth::user()->team_id) ->get();</code></pre> <p> kedua -dua kaedah menggunakan kekangan <code>where('team_id', Auth::user()->team_id)</code> kepada semua pertanyaan pada model <code>AppModelsArticle</code>. </p> <p> ini bermakna anda kini boleh menulis pertanyaan tanpa bimbang tentang penapisan oleh <code>team_id</code> lajur: </p> <pre class="brush:php;toolbar:false"><code>php artisan make:scope TeamScope</code></pre> <p> Jika kita menganggap bahawa pengguna tergolong dalam pasukan dengan <code>team_id</code> menjadi <code>1</code>, SQL berikut akan dihasilkan untuk pertanyaan di atas: </p> <pre class="brush:php;toolbar:false"><code>declare(strict_types=1); namespace App\Models\Scopes; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Scope; use Illuminate\Support\Facades\Auth; final readonly class TeamScope implements Scope { /** * Apply the scope to a given Eloquent query builder. */ public function apply(Builder $builder, Model $model): void { $builder->where('team_id', Auth::user()->team_id); } }</code></pre> <p> Ini sejuk, bukan? ! </p> <h3 id="Skop-Pertanyaan-Global-Anonymous"> Skop Pertanyaan Global #Anonymous </h3> <p> Satu lagi cara untuk menentukan dan menggunakan skop pertanyaan global adalah dengan menggunakan skop global tanpa nama. </p> <p> mari kita mengemas kini model <code>AppModelsArticle</code> kami untuk menggunakan skop global tanpa nama: </p> <pre class="brush:php;toolbar:false"><code>declare(strict_types=1); namespace App\Models; use App\Models\Scopes\TeamScope; use Illuminate\Database\Eloquent\Attributes\ScopedBy; use Illuminate\Database\Eloquent\Model; #[ScopedBy(TeamScope::class)] final class Article extends Model { // ... }</code></pre> <p> Dalam contoh kod di atas, kami menggunakan kaedah <code>addGlobalScope</code> untuk menentukan skop global tanpa nama dalam kaedah <code>booted</code> model. <code>addGlobalScope</code> kaedah menerima dua parameter: </p> <ul> <li> Nama skop - jika anda perlu mengabaikannya dalam pertanyaan anda, anda boleh menggunakan nama ini untuk merujuk kepada skop </li> <li> Kekangan Skop - Tentukan penutupan untuk memohon kekangan </li> </ul> <p> Seperti kaedah lain, ini menggunakan kekangan <code>where('team_id', Auth::user()->team_id)</code> kepada semua pertanyaan pada model <code>AppModelsArticle</code>. </p> <p> Dalam pengalaman saya, skop global tanpa nama tidak biasa seperti menentukan skop global dalam kelas yang berasingan. Tetapi ia bermanfaat untuk mengetahui bahawa mereka boleh didapati sekiranya berlaku kecemasan. </p> <h3 id="gnore-scope-query-query"> #gnore scope query query </h3> <p> Kadang -kadang anda mungkin ingin menulis pertanyaan yang tidak menggunakan skop pertanyaan global yang telah digunakan untuk model. Sebagai contoh, anda mungkin membina laporan laporan atau analisis yang perlu mengandungi semua rekod tanpa mengira skop pertanyaan global. </p> <p> Jika ini berlaku, anda boleh menggunakan salah satu daripada dua kaedah untuk mengabaikan skop global. </p> <p> Kaedah pertama ialah <code>withoutGlobalScopes</code>. Kaedah ini membolehkan anda mengabaikan semua skop global pada model jika tiada parameter yang diserahkan kepadanya: </p> <pre class="brush:php;toolbar:false"><code>use App\Models\Article; $publishedPosts = Article::query() ->where('published_at', '<', now()) ->get();</code></pre> <p> atau, jika anda ingin mengabaikan hanya satu set skop global yang diberikan, anda boleh lulus nama skop ke kaedah <code>withoutGlobalScopes</code>: </p> <pre class="brush:php;toolbar:false"><code>use App\Models\Article; use Illuminate\Contracts\Database\Eloquent\Builder; $unpublishedPosts = Article::query() ->where(function (Builder $query): void { $query->whereNull('published_at') ->orWhere('published_at', '>', now()); }) ->get();</code></pre> <p> Dalam contoh di atas, kita mengabaikan <code>AppModelsScopesTeamScope</code> dan satu lagi skop global tanpa nama fiksyen yang dipanggil <code>another_scope</code>. </p> <p> atau, jika anda ingin mengabaikan hanya satu skop global, anda boleh menggunakan kaedah <code>withoutGlobalScope</code>: </p> <pre class="brush:php;toolbar:false"><code>declare(strict_types=1); namespace App\Models; use Illuminate\Contracts\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; final class Article extends Model { public function scopePublished(Builder $query): Builder { return $query->where('published_at', '<', now()); } public function scopeNotPublished(Builder $query): Builder { return $query->where(function (Builder $query): Builder { return $query->whereNull('published_at') ->orWhere('published_at', '>', now()); }); } // ... }</code></pre> <h3 id="precaations-untuk-skop-pertanyaan-global"> #precaations untuk skop pertanyaan global </h3> <p> Adalah penting untuk diingat bahawa skop pertanyaan global hanya digunakan untuk pertanyaan yang dibuat melalui model. Jika anda menulis pertanyaan pangkalan data menggunakan penampilan <code>IlluminateSupportFacadesDB</code>, skop pertanyaan global tidak digunakan. </p> <p> Sebagai contoh, katakan anda menulis pertanyaan ini dan anda mahu ia merangkak hanya artikel milik pasukan log masuk: </p> <pre class="brush:php;toolbar:false"><code>use App\Models\Article; $publishedPosts = Article::query() ->published() ->get(); $unpublishedPosts = Article::query() ->notPublished() ->get();</code></pre> <p> Dalam pertanyaan di atas, walaupun skop pertanyaan global <code>AppModelsArticle</code> ditakrifkan pada model <code>AppModelsScopesTeamScope</code>, skop tidak akan digunakan. Oleh itu, anda perlu memastikan bahawa kekangan digunakan secara manual dalam pertanyaan pangkalan data. </p> <h1 id="menguji-skop-pertanyaan-tempatan"> menguji skop pertanyaan tempatan </h1> <hr> <p> Sekarang kita telah belajar bagaimana untuk membuat dan menggunakan skop pertanyaan, kita akan melihat cara menulis ujian untuk mereka. </p> <p> Terdapat beberapa cara untuk menguji skop pertanyaan, dan kaedah yang anda pilih mungkin bergantung pada keutamaan peribadi anda atau kandungan skop yang anda tulis. Sebagai contoh, anda mungkin ingin menulis lebih banyak ujian gaya unit untuk skop. Sebagai alternatif, anda mungkin ingin menulis lebih banyak ujian gaya integrasi yang menguji skop dalam konteks seperti pengawal. </p> <p> Secara peribadi, saya suka mencampurkan kedua -dua supaya saya dapat memastikan bahawa skop itu menambah kekangan yang betul dan skop sebenarnya digunakan dalam pertanyaan. </p> <p> mari kita mulakan dengan contoh sebelumnya <code>published</code> dan <code>notPublished</code> julat dan tulis beberapa ujian untuk mereka. Kita perlu menulis dua ujian yang berbeza (satu untuk setiap julat): </p> <ul> <li> pemeriksaan ujian <code>published</code> pulangan pelbagai hanya artikel yang diterbitkan. </li> <li> Pemeriksaan ujian <code>notPublished</code> Pulangan jarak hanya artikel yang tidak diterbitkan. </li> </ul> <p> mari kita lihat ujian ini dan kemudian bincangkan apa yang sedang dilakukan: </p> <pre class="brush:php;toolbar:false"><code>use App\Models\Article; $publishedPosts = Article::query() ->where('published_at', '<', now()) ->get();</code></pre> <p> kita dapat melihat dalam fail ujian di atas, kita mula -mula membuat beberapa data dalam kaedah <code>setUp</code>. Kami telah mencipta dua artikel yang diterbitkan, satu artikel yang tidak berjadual dan satu artikel yang diatur. </p> <p> maka terdapat ujian (<st>) yang memeriksa julat <code>only_published_articles_are_returned</code> untuk mengembalikan hanya artikel yang diterbitkan. Terdapat juga ujian (<code>published</code>) yang memeriksa julat <code>only_not_published_articles_are_returned</code> untuk mengembalikan hanya artikel yang tidak diterbitkan. <code>notPublished</code> </st></p> Dengan melakukan ini, kami kini boleh memastikan bahawa skop pertanyaan kami menggunakan kekangan seperti yang diharapkan. <p> </p> julat ujian dalam pengawal <h1> </h1> <hr> Seperti yang telah kami sebutkan, cara lain untuk menguji skop pertanyaan adalah untuk menguji mereka dalam konteks yang digunakan dalam pengawal. Walaupun ujian pengasingan skop dapat membantu menegaskan bahawa skop menambah kekangan yang betul kepada pertanyaan, ia tidak benar -benar menguji sama ada skop digunakan dalam permohonan seperti yang diharapkan. Sebagai contoh, anda mungkin lupa untuk menambah julat <p> ke pertanyaan dalam kaedah pengawal. <code>published</code> </p> Jenis -jenis kesilapan ini boleh ditangkap dengan menulis ujian yang menegaskan bahawa mengembalikan data yang betul apabila menggunakan skop dalam kaedah pengawal. <p> </p> Mari kita ambil contoh mempunyai aplikasi blog multi-penyewa dan tulis ujian untuk kaedah pengawal yang menyenaraikan artikel. Mari kita anggap kita mempunyai kaedah pengawal yang sangat mudah, seperti berikut: <p> </p> <pre class="brush:php;toolbar:false"><code>use App\Models\Article; use Illuminate\Contracts\Database\Eloquent\Builder; $unpublishedPosts = Article::query() ->where(function (Builder $query): void { $query->whereNull('published_at') ->orWhere('published_at', '>', now()); }) ->get();</code></pre> Kami mengandaikan bahawa model <p> telah menggunakan <code>AppModelsArticle</code> kami. <code>AppModelsScopesTeamScope</code> </p> kami akan menegaskan bahawa kami hanya mengembalikan artikel yang tergolong dalam pasukan pengguna. Kes ujian mungkin kelihatan seperti ini: <p> </p> <pre class="brush:php;toolbar:false"><code>declare(strict_types=1); namespace App\Models; use Illuminate\Contracts\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; final class Article extends Model { public function scopePublished(Builder $query): Builder { return $query->where('published_at', '<', now()); } public function scopeNotPublished(Builder $query): Builder { return $query->where(function (Builder $query): Builder { return $query->whereNull('published_at') ->orWhere('published_at', '>', now()); }); } // ... }</code></pre> Dalam ujian di atas, kami mencipta dua pasukan. Kemudian, kami membuat pengguna milik Team One. Kami mencipta 3 artikel untuk pasukan 1 dan 2 artikel untuk Pasukan 2. Kami kemudian bertindak sebagai pengguna dan membuat permintaan kepada kaedah pengawal yang menyenaraikan artikel. Kaedah pengawal harus mengembalikan hanya 3 artikel milik pasukan satu, jadi kami menegaskan bahawa hanya artikel -artikel tersebut dikembalikan dengan membandingkan ID artikel. <p> </p> Ini bermakna kita dapat memastikan bahawa skop pertanyaan global digunakan seperti yang diharapkan dalam kaedah pengawal. <p> </p> Kesimpulan <h1> </h1> <hr> Dalam artikel ini, kami telah belajar tentang skop pertanyaan tempatan dan skop pertanyaan global. Kami mempelajari perbezaan di antara mereka, bagaimana untuk membuat dan menggunakannya, dan bagaimana menulis ujian untuk mereka. <p> </p> Harap anda sekarang dapat menggunakan skop pertanyaan dengan yakin dalam aplikasi Laravel anda. <p></p>

Atas ialah kandungan terperinci Belajar menguasai skop pertanyaan di laravel. 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

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1488
72
Skop pembolehubah PHP dijelaskan Skop pembolehubah PHP dijelaskan Jul 17, 2025 am 04:16 AM

Masalah dan penyelesaian biasa untuk skop pembolehubah PHP termasuk: 1. Pembolehubah global tidak dapat diakses dalam fungsi, dan ia perlu diluluskan menggunakan kata kunci atau parameter global; 2. Pembolehubah statik diisytiharkan dengan statik, dan ia hanya dimulakan sekali dan nilai dikekalkan antara pelbagai panggilan; 3. Pembolehubah hyperglobal seperti $ _get dan $ _post boleh digunakan secara langsung dalam mana -mana skop, tetapi anda perlu memberi perhatian kepada penapisan yang selamat; 4. Fungsi Anonymous perlu memperkenalkan pembolehubah skop induk melalui kata kunci penggunaan, dan apabila mengubah suai pembolehubah luaran, anda perlu lulus rujukan. Menguasai peraturan ini boleh membantu mengelakkan kesilapan dan meningkatkan kestabilan kod.

Bagaimana cara mengendalikan fail memuat naik dengan selamat di PHP? Bagaimana cara mengendalikan fail memuat naik dengan selamat di PHP? Jul 08, 2025 am 02:37 AM

Untuk mengendalikan muat naik fail PHP dengan selamat, anda perlu mengesahkan sumber dan jenis, mengawal nama fail dan laluan, menetapkan sekatan pelayan, dan memproses fail media dua kali. 1. Sahkan sumber muat naik untuk mengelakkan CSRF melalui token dan mengesan jenis mime sebenar melalui finfo_file menggunakan kawalan putih; 2. Namakan semula fail ke rentetan rawak dan tentukan pelanjutan untuk menyimpannya dalam direktori bukan web mengikut jenis pengesanan; 3. Konfigurasi PHP mengehadkan saiz muat naik dan direktori sementara Nginx/Apache melarang akses ke direktori muat naik; 4. Perpustakaan GD menyambung semula gambar -gambar untuk membersihkan data yang berpotensi.

Mengulas kod dalam php Mengulas kod dalam php Jul 18, 2025 am 04:57 AM

Terdapat tiga kaedah umum untuk kod komen PHP: 1. Use // atau # untuk menyekat satu baris kod, dan disyorkan untuk menggunakan //; 2. Gunakan /.../ untuk membungkus blok kod dengan pelbagai baris, yang tidak boleh bersarang tetapi boleh diseberang; 3. Komen -komen kemahiran gabungan seperti menggunakan / jika () {} / untuk mengawal blok logik, atau untuk meningkatkan kecekapan dengan kunci pintasan editor, anda harus memberi perhatian kepada simbol penutupan dan mengelakkan bersarang apabila menggunakannya.

Bagaimana penjana berfungsi dalam php? Bagaimana penjana berfungsi dalam php? Jul 11, 2025 am 03:12 AM

Ageneratorinphpisamemory-efficientwaytoiterateOverlargedatasetsbyieldingvaluesonateatimeNsteadofreturningthemallatonce.1.GeneratorSuseTheyEldeyWorderWorderToProducevaluuesondemand,

Petua untuk menulis komen php Petua untuk menulis komen php Jul 18, 2025 am 04:51 AM

Kunci untuk menulis komen PHP adalah untuk menjelaskan tujuan dan spesifikasi. Komen harus menjelaskan "mengapa" dan bukannya "apa yang dilakukan", mengelakkan redundansi atau terlalu kesederhanaan. 1. Gunakan format bersatu, seperti docblock (/*/) untuk deskripsi kelas dan kaedah untuk meningkatkan keserasian dan keserasian alat; 2. Menekankan sebab -sebab di sebalik logik, seperti mengapa JS melompat perlu dikeluarkan secara manual; 3. Tambahkan gambaran keseluruhan gambaran sebelum kod kompleks, terangkan proses dalam langkah -langkah, dan membantu memahami idea keseluruhan; 4. Gunakan Todo dan Fixme secara rasional untuk menandakan item dan masalah untuk memudahkan penjejakan dan kerjasama berikutnya. Anotasi yang baik dapat mengurangkan kos komunikasi dan meningkatkan kecekapan penyelenggaraan kod.

Tutorial pemasangan php cepat Tutorial pemasangan php cepat Jul 18, 2025 am 04:52 AM

Toinstallphpquickly, usexampponwindowsorhomeBrewonmacos.1.onwindows, downloadandInstallxampp, selectcomponents, startapache, andplaceFilesinhtdocs.2.alternative, secara manualstallphpfromphp.netandsheBerver.3

Cara mengakses watak dalam rentetan dengan indeks dalam php Cara mengakses watak dalam rentetan dengan indeks dalam php Jul 12, 2025 am 03:15 AM

Dalam PHP, anda boleh menggunakan kurungan persegi atau pendakap keriting untuk mendapatkan aksara indeks spesifik rentetan, tetapi kurungan persegi disyorkan; Indeks bermula dari 0, dan akses di luar julat mengembalikan nilai null dan tidak dapat diberikan nilai; MB_SUBSTR dikehendaki mengendalikan watak multi-bait. Sebagai contoh: $ str = "hello"; echo $ str [0]; output h; dan watak -watak Cina seperti MB_SUBSTR ($ str, 1,1) perlu mendapatkan hasil yang betul; Dalam aplikasi sebenar, panjang rentetan perlu diperiksa sebelum gelung, rentetan dinamik perlu disahkan untuk kesahihan, dan projek berbilang bahasa mengesyorkan menggunakan fungsi keselamatan multi-bait secara seragam.

Belajar PHP: Panduan Pemula Belajar PHP: Panduan Pemula Jul 18, 2025 am 04:54 AM

Tolearnphpeffectively, startbysettingupalocalverenvironmentusingToolsLikexamppandaCodeDitorLikevscode.1) InstallXamppforapa Che, MySql, danPhp.2) UseAcodeeditorForsyntaxSupport.3) testyoursetupwithasimplephpfile.next, learnphpbasicsincludingvariables, ech

See all articles