Rumah >pembangunan bahagian belakang >tutorial php >Pengenalan kepada Redbean

Pengenalan kepada Redbean

Jennifer Aniston
Jennifer Anistonasal
2025-02-23 08:27:09852semak imbas

Introduction to Redbean

mata teras

    RedBeandPhp adalah ORM (Objek Relational Mapper) yang secara dinamik boleh membuat dan mengubah suai skema pangkalan data yang mendasari, yang sesuai untuk prototaip dan mempercepatkan pembangunan.
  • RedBeandPhp membolehkan anda membuat objek (atau "kacang") dan simpannya ke pangkalan data, dan secara automatik menyesuaikan corak untuk menyesuaikan diri walaupun tidak ada jadual yang sepadan.
  • RedBeandPhp menyokong hubungan antara objek melalui konsep "memiliki" objek yang berkaitan, termasuk hubungan satu-ke-satu, satu-banyak dan banyak-banyak.
  • "Mod Streaming" RedBeandPhp membolehkan pelarasan automatik skema pangkalan data apabila objek berubah, tetapi disyorkan untuk beralih kepada "mod beku" dalam pengeluaran untuk prestasi dan keselamatan yang lebih baik.
  • Walaupun RedBeandPhp adalah alat yang sangat baik untuk prototaip dan lelaran yang cepat, berhati -hati juga diperlukan apabila digunakan dalam persekitaran pengeluaran, seperti memeriksa jenis data lajur, kunci asing, hubungan, dan indeks.

Pengenalan kepada RedBeandPhp

Dalam pembangunan aplikasi pesat (RAD) dan prototaip, terdapat banyak alat untuk membantu anda memulakan dengan cepat. Dari cepat bermula ke rangka kerja mini, dari alat binaan seperti komposer kepada pemasang satu klik, dan tentu saja Orm-terdapat banyak cara untuk mempercepatkan pembangunan. Kami akan memberi tumpuan kepada RedBeainphp, ORM unik yang sesuai untuk prototaip.

pemula RedBeandPhp

RedBeandPhp adalah ORM (Object Relational Mapper), tetapi ia lebih daripada sekadar ORM - ia secara dinamik boleh membuat dan mengubah suai skema pangkalan data yang mendasari. Secara tradisinya, anda akan menggunakan Orm sebagai pembungkus untuk skema pangkalan data yang telah dirancang sebelum ini. Ini adalah baik untuk kebanyakan projek, tetapi apabila anda prototaip (atau berfikir semasa melakukannya), setelah itu dilakukan untuk anda di latar belakang dapat mempercepatkan lagi.

Apabila anda membuat objek (atau kacang) dengan redbeandphp, skema akan menyesuaikan diri secara automatik selagi anda menyimpannya ke pangkalan data. Ini terpakai walaupun anda cuba menyimpan objek yang tidak mempunyai jadual yang sama!

Pemasangan

Cara paling mudah untuk memasang RedBeandPhp adalah untuk memuat turun pakej All-In-One. Kemudian anda hanya perlu memperkenalkan satu fail

. rb.php

Anda juga boleh memasangnya melalui komposer;

mengedarkan kacang

Langkah pertama dalam menggunakan RedBeandPhp adalah untuk "mengedarkan" kacang - ia pada dasarnya adalah objek. Perhatikan bahawa untuk seluruh artikel ini, saya menggunakan "kacang" dan objek secara bergantian.

Pengagihan dilakukan oleh kaedah statik kelas Redbean atas "R", yang mengambil jenis sebagai parameter.

Contoh:

<code class="language-php">$user = R::dispense('user');</code>
Ini akan membuat objek pengguna kosong yang boleh anda berikan kepada sifat. Anda juga boleh mengedarkan pelbagai kacang secara serentak dengan menambahkan nombor yang diperlukan sebagai parameter kedua:

<code class="language-php">$users = R::dispense('user', 10);</code>
Pada peringkat ini, tidak kira sama ada jadual wujud dalam pangkalan data untuk menyelamatkannya;

mari kita cuba-sila perhatikan penggunaan kaedah statik store, yang digunakan untuk menulis ke pangkalan data:

<code class="language-php">$user = R::dispense('user');</code>

Di kebanyakan Orms, ini gagal jika anda belum membuat jadual untuk menyelamatkan pengguna. Walau bagaimanapun, dengan RedBeandPHP, ini akan berjaya kerana ia akan membuat jadual untuk anda. Jika anda melihat pangkalan data anda pada peringkat ini, anda harus melihat jadual seperti ini:

<code class="language-php">$users = R::dispense('user', 10);</code>

Konvensyen penamaan sangat ketat kerana keperluannya;

Sekarang mari kita lihat bagaimana corak berubah semasa meleleh. Rekod pengguna mungkin memerlukan medan kata laluan - tetapi kami terlupa untuk membuatnya.

jika anda melakukan ini:

<code class="language-php">$user->name = 'Joe Bloggs';
$user->email = 'joe.bloggs@example.com';
$id = R::store($user);
print $id;</code>

Kali ini, RedBeandPhp tahu bagaimana untuk menyimpan pengguna, tetapi jadual pangkalan data tidak dapat menampung medan baru. Tidak mengapa - ia hanya menambah satu, prestasi anda kelihatan seperti ini:

<code>user
----

id      int(11) UN PK AI
name    varchar(255)
email   varchar(255)</code>

(kandungan berikut adalah serupa dengan teks asal, tetapi struktur ayat dan pelarasan perkataan telah dibuat, dan kedudukan dan format imej tidak berubah)

Jenis data medan

RedBeandPhp akan cuba meneka jenis data medan berdasarkan maklumat yang anda berikan. Jadi jika anda lakukan:

<code class="language-php">$user->password = 'secret';
R::store($user);</code>

anda akan mendapati bahawa bidang umur telah dicipta sebagai kecil.

Jika jenis medan tidak mencukupi kemudian, redbeainphp akan mengubahnya secara dinamik. Jika anda kini cuba memberikan 3000 kepada umur, lajur akan ditukar kepada Int. Jika anda mengeja nama sebagai "tiga puluh", ia akan berubah kepada Varchar. Tetapkan medan Varchar kepada lebih daripada 255 aksara, ia akan menjadi medan teks, dan sebagainya.

Cari kacang

anda boleh menggunakan kaedah load untuk memuatkan objek tertentu dengan kunci utama:

<code>user
----

id          int(11) UN PK AI
name        varchar(255)
email       varchar(255)
password    varchar(255)</code>

anda boleh menggunakan kaedah batch untuk memuatkan pelbagai objek sekaligus (tekan kekunci utama):

<code class="language-php">$user->age = 30;
R::store($user);</code>

Ini akan mengembalikan pelbagai kacang.

Anda juga boleh menggunakan SQL untuk mencari kacang. Parameter kedua kaedah find pada dasarnya adalah SQL bermula dengan klausa WHERE, tidak termasuk kata kunci di mana itu sendiri. Sebagai contoh, untuk mencari pengguna di bawah umur 20 tahun:

<code class="language-php">$user = R::load('user', 1);</code>

Perhatikan bahawa kita mengikat parameter, jadi parameter ketiga adalah array. Ini akan mengembalikan pelbagai kacang menggunakan ID sebagai kunci.

anda boleh menambah lebih banyak klausa kepada SQL, seperti:

Count

anda boleh menggunakan kaedah count untuk mencari bilangan rekod:

<code class="language-php">$users = R::batch('user', array(1, 2, 3));</code>

Padam

untuk memadam kacang tunggal, gunakan trash:

<code class="language-php">$users = R::find('user', 'age < 20');</code>

Untuk memadam pelbagai kacang jenis tertentu, gunakan trashAll:

<code class="language-php">$number_of_users = R::count('user');</code>

Untuk memadam semua kacang jenis tertentu, gunakan wipe:

<code class="language-php">R::trash($user);</code>

atau, untuk memadam segala -galanya - ini boleh berguna apabila prototaip - anda boleh menggunakan nuke:

<code class="language-php">R::trashAll('user');</code>

Hubungan

Seperti mana -mana ORM, hubungan antara objek disokong.

Hubungan satu-ke-banyak menggunakan konsep objek "memiliki" yang berkaitan dengan rujukan. Sebagai contoh, jika pesanan hanya mempunyai satu pengguna, pengguna dipanggil "sendiri" pesanan. Dengan menggunakan nama pembolehubah tertentu, kita boleh mencipta hubungan ini seperti ini:

<code class="language-php">$user = R::dispense('user');</code>

elemen utama di sini adalah atribut ownOrders. Jika anda menyemak pangkalan data anda sekarang, anda harus mendapati bahawa RedBeandPhp telah menambah medan user_id ke jadual pesanan, bersama -sama dengan kunci asing yang sepadan.

Pengguna yang "memiliki" pesanan hanya boleh mengakses sebagai atribut, contohnya:

<code class="language-php">$users = R::dispense('user', 10);</code>

Untuk menunjukkan hubungan yang banyak, mari kita buat beberapa watak:

<code class="language-php">$user->name = 'Joe Bloggs';
$user->email = 'joe.bloggs@example.com';
$id = R::store($user);
print $id;</code>

Peranan bukan sekadar pengguna individu; Oleh itu, untuk memberikan dua peranan pertama kepada pengguna dan menjalin hubungan dalam pangkalan data apabila berbuat demikian, kita boleh melakukan ini:

<code>user
----

id      int(11) UN PK AI
name    varchar(255)
email   varchar(255)</code>

Kali ini anda harus mencari jadual baru yang dipanggil role_user yang mentakrifkan hubungan ini sebagai hubungan yang banyak.

anda boleh mendapatkan peranan yang dimiliki oleh pengguna dengan membaca atribut:

<code class="language-php">$user->password = 'secret';
R::store($user);</code>

Penangguhan ini memuatkan peranan pada kali pertama mereka diakses.

Hubungan mempunyai lebih banyak lagi, termasuk menambahkan atribut dengan hubungan menggunakan link, penapisan dengan pautan, memuat segera, dan lain -lain - Sila periksa dokumentasi untuk maklumat lanjut.

Model

Anda boleh membuat model untuk sesuai dengan jenis kacang, ikuti konvensyen penamaan tertentu. Model itu kemudian menghubungkan ke kacang menggunakan fius;

Konvensyen adalah mudah; Sebagai contoh, untuk membuat model untuk pengguna, anda hanya perlu melakukan perkara berikut: Model_Type

Selepas menentukan model, anda boleh melaksanakan banyak kaedah yang akan dipanggil pada titik yang berbeza dalam kitaran hayat kacang. Jadual berikut menggambarkan pemetaan antara operasi CRUD dan "cangkuk" yang anda boleh melaksanakan:
<code>user
----

id          int(11) UN PK AI
name        varchar(255)
email       varchar(255)
password    varchar(255)</code>

Sebagai contoh, anda boleh menambah pengesahan dengan melaksanakan update():

<code class="language-php">$user = R::dispense('user');</code>

Anda tentu saja juga boleh membuat kaedah anda sendiri serta menyesuaikan getters.

Pangkalan Data Permintaan

anda boleh melaksanakan pertanyaan SQL asal seperti ini:

<code class="language-php">$users = R::dispense('user', 10);</code>

anda boleh mengembalikan pelbagai baris multidimensi seperti ini:

<code class="language-php">$user->name = 'Joe Bloggs';
$user->email = 'joe.bloggs@example.com';
$id = R::store($user);
print $id;</code>

Di samping itu, anda boleh menggunakan parameter mengikat:

<code>user
----

id      int(11) UN PK AI
name    varchar(255)
email   varchar(255)</code>

anda boleh mendapatkan satu lajur seperti ini:

<code class="language-php">$user->password = 'secret';
R::store($user);</code>

anda juga boleh mendapatkan array bersekutu menggunakan dua lajur jadual:

<code>user
----

id          int(11) UN PK AI
name        varchar(255)
email       varchar(255)
password    varchar(255)</code>

menggunakan aplikasi anda

Walaupun ia boleh dikatakan yang terbaik untuk prototaip (atau sekurang -kurangnya pembangunan) - anda boleh mengikuti langkah -langkah tertentu, tidak ada sebab mengapa RedBeandPHP tidak dapat terus digunakan dalam persekitaran pengeluaran.

Mekanisme mod kemas kini dinamik redbeanphp dipanggil "mod streaming"; Walau bagaimanapun, anda boleh mematikannya dengan "membekukan" itu:

<code class="language-php">$user->age = 30;
R::store($user);</code>

Semasa memasuki pengeluaran, anda perlu mengikuti langkah -langkah berikut:

  • Semak Jenis Data Lajur
  • periksa kunci dan hubungan asing
  • periksa indeks - redbeandphp akan membuat beberapa indeks - dan mengubahnya seperti yang diperlukan

Ringkasan

Dalam artikel ini, saya memperkenalkan RedBeandPhp, cara yang mudah untuk memulakan proses pembangunan anda dengan membolehkan anda memproses model domain tanpa perlu membina corak asas terlebih dahulu. Sama ada ia sesuai untuk persekitaran pengeluaran masih dapat dilihat - tetapi ia adalah alat yang hebat untuk prototaip dan lelaran cepat. Saya tidak banyak menutupi, jadi pastikan anda menyemak dokumentasi.

FAQ REDBEANPHP

Apakah fungsi utama RedBeandPhp?

RedBeandPhp adalah alat pemetaan objek-relasi-relasi yang sederhana dan ringan yang menyediakan pelbagai ciri yang direka untuk memudahkan interaksi pangkalan data. Ia dikenali dengan pendekatan "konfigurasi sifar", yang bermaksud ia hanya memerlukan persediaan dan konfigurasi yang minimum. Ia secara automatik membina skema pangkalan data berdasarkan objek yang anda buat, dan boleh menyesuaikan skema seperti yang diperlukan apabila objek berubah. RedBeandPHP juga menyokong mod streaming dan mod pembekuan, yang membolehkan anda dengan mudah menukar antara persekitaran pembangunan dan pengeluaran. Ia termasuk struktur pokok terbina dalam dan menyokong pengetinan dan pengedaran kacang untuk penyimpanan dan pengambilan objek yang mudah.

Bagaimanakah RedBeandPhp dibandingkan dengan alat ORM yang lain?

Berbanding dengan alat ORM yang lain, RedBeandPhp menonjol untuk kesederhanaan dan kemudahan penggunaannya. Ia tidak memerlukan fail konfigurasi, kelas SQL atau model. Ini menjadikannya pilihan yang baik untuk pemula atau projek di mana ORM yang lengkap muncul berlebihan. Walau bagaimanapun, ia masih menawarkan ciri -ciri yang kuat seperti pengubahsuaian mod automatik dan struktur pokok, menjadikannya cukup untuk projek yang lebih kompleks.

Bagaimana untuk memasang dan menyediakan RedBeandPhp?

RedBeandPhp boleh dipasang melalui komposer (alat pengurusan ketergantungan PHP yang popular). Selepas pemasangan, anda boleh menyediakan RedBeandPhp dengan memasukkan fail RedBeandPhp dalam skrip dan menyediakan sambungan pangkalan data. RedBeandPHP secara automatik akan membuat dan mengubah suai jadual berdasarkan objek anda.

Apakah "mod streaming" dalam redbeandphp?

Mod streaming adalah ciri RedBeandPhp yang membolehkannya secara automatik menyesuaikan skema pangkalan data apabila objek berubah. Ini dapat menjimatkan banyak masa semasa pembangunan kerana anda tidak perlu mengubahsuai pangkalan data secara manual setiap kali anda menukar objek. Walau bagaimanapun, adalah disyorkan untuk beralih kepada "mod pembekuan" dalam persekitaran pengeluaran untuk sebab -sebab prestasi dan keselamatan.

Bagaimanakah RedBeandPhp mengendalikan hubungan antara objek?

RedBeandPhp menyokong beberapa jenis hubungan antara objek, termasuk satu-ke-satu, satu-ke-banyak, dan banyak-banyak. Hubungan ini dikendalikan dengan menggunakan "kacang" (objek mudah yang mewakili baris dalam jadual pangkalan data). Anda boleh mengaitkan kacang dengan mudah untuk mewakili hubungan antara objek.

Bolehkah saya menggunakan RedBeandPhp dengan pangkalan data saya yang sedia ada?

Ya, RedBeandPhp boleh digunakan dengan pangkalan data sedia ada. Walau bagaimanapun, sila ambil perhatian bahawa ciri pengubahsuaian mod automatik RedBeanPHP boleh mengubah struktur pangkalan data, jadi disyorkan untuk membuat sandaran pangkalan data sebelum menggunakan RedBeandPHP.

Adakah RedBeandPhp sesuai untuk projek besar dan kompleks?

Walaupun RedBeandPhp terkenal dengan kesederhanaan dan kemudahan penggunaannya, ia juga menawarkan ciri -ciri yang kuat yang menjadikannya sesuai untuk projek -projek besar dan kompleks. Pengubahsuaian mod automatik, sokongan untuk pelbagai jenis hubungan, dan struktur pokok terbina dalam semuanya sangat berguna dalam projek besar. Walau bagaimanapun, untuk projek yang sangat besar atau kompleks, alat ORM yang lebih komprehensif mungkin lebih sesuai.

Bagaimana RedBeandPhp Mengendalikan Keselamatan?

RedBeandPhp mengandungi beberapa ciri yang direka untuk meningkatkan keselamatan. Ia menggunakan kenyataan pra -proses untuk membantu mencegah serangan suntikan SQL dan mengesyorkan menggunakan "mod pembekuan" dalam pengeluaran untuk mencegah perubahan skema yang tidak dijangka. Walau bagaimanapun, seperti mana -mana alat, adalah penting untuk mengikuti amalan terbaik keselamatan dan menyimpan redbeandphp sehingga kini.

Apa itu "kacang boleh" dalam redbeani?

Bean Canning adalah ciri RedBeandPhp yang membolehkan anda menyimpan dan mengambil keseluruhan kacang (objek) yang ditetapkan sekaligus. Ini boleh menjadi cara yang mudah untuk mengendalikan sejumlah besar data, dan juga dapat membantu meningkatkan prestasi dengan mengurangkan bilangan pertanyaan pangkalan data.

Bolehkah saya menggunakan redbeandphp tanpa komposer?

Walaupun komposer adalah kaedah yang disyorkan untuk memasang RedBeandPhp, anda juga boleh memuat turun dan memasukkan fail RedBeandPhp terus ke dalam skrip anda. Walau bagaimanapun, dengan menggunakan komposer menjadikannya lebih mudah untuk mengurus dan mengemas kini RedBeandPhp dan sebarang kebergantungan lain yang mungkin ada.

Atas ialah kandungan terperinci Pengenalan kepada Redbean. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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