Cara tercepat untuk membangun situs web sederhana menggunakan PHP!
Instalasi
Tentang velox
Arsitektur
Konfigurasi
Kelas
Fungsi
Perintah
Tema
Memperluas Velox
MVC
Templating
Otentikasi
Changelog
Dokumentasi
Jika Anda menyukai proyek ini dan ingin mendukung pengembangannya, memberikannya akan dihargai!

Lihat demo atau mainkan dengan repl .
Apakah Anda ingin membaca? Lihatlah API lengkap di situs web dokumentasi di marwanalsoltany.github.io/velox .
composer create-project marwanalsoltany/velox my-velox-app Catatan: Anda mungkin perlu menambahkan --stability=dev tergantung pada versi/cabang. Anda mungkin juga ingin menambahkan --no-dev flag untuk tidak menginstal dependensi pengembangan.
git clone https://github.com/MarwanAlsoltany/velox.git my-velox-appFakta: Jika Anda tidak ingin menggunakan paket pihak ketiga lainnya. Menginstal Velox menggunakan git sudah cukup.
Unduh Velox sebagai .zip atau .tar.gz dan ekstrak di direktori root web server Anda.
Saran: Jika Anda ingin menguji Velox dengan cepat dan Anda tidak memiliki server web yang tersedia, gunakan metode pemasangan apa pun dan jalankan php bin/app-serve dari dalam direktori Velox. Perintah ini akan memutar server web pengembangan di localhost:8000 (perhatikan bahwa Anda harus memiliki setidaknya PHP yang diinstal pada sistem Anda).
Velox adalah kerangka mikro ringan yang membuat membuat situs web sederhana menggunakan PHP Joyful. Ini membantu Anda membuat situs web tahan masa depan lebih cepat dan lebih efisien. Ini menyediakan komponen yang memfasilitasi proses pembuatan situs web menggunakan PHP. Velox tidak memiliki dependensi, paket Velox dan semua yang dibutuhkannya termasuk dalam proyek itu sendiri. Semua yang disediakan Velox adalah cara untuk bekerja dengan konfigurasi , lulus data , mendaftar rute , berinteraksi dengan database , memberikan tampilan , menangani pengecualian , kode autoload , dan menyelesaikan aset. Ini memberikan tampilan dan bagian pengontrol dari pola desain MVC . Menatap dari v1.3.0 , Velox juga menyediakan bagian model , menjadikannya kerangka kerja MVC yang sepenuhnya ditampilkan dan mulai dari v1.4.0 juga dikirimkan dengan sistem otentikasi sederhana. Velox juga dapat digunakan sebagai generator situs statis jika yang Anda butuhkan adalah file HTML pada akhirnya.
Velox dibuat untuk memecahkan masalah tertentu, ini adalah cara untuk membangun situs web yang antara dinamis dan statis, cara untuk membuat situs web sederhana dengan beberapa halaman tanpa dipaksa untuk menggunakan kerangka kerja atau CMS yang dilengkapi dengan satu ton barang yang tidak akan pernah digunakan, ringan, minimal, dan langsung ke titik.
Tidak disarankan untuk menggunakan Velox jika Anda memiliki proyek perantara, Anda akan lebih baik menggunakan kerangka kerja yang mapan. Velox bukan inisiatif untuk menemukan kembali roda, Anda dapat melihat Velox sebagai kit starter untuk proyek-proyek kecil.
Velox memiliki kasus penggunaan yang sangat istimewa, situs web sederhana, dan di sini berarti situs web yang sangat sederhana. Keuntungannya adalah, Anda tidak memiliki barang yang tidak Anda butuhkan. Membandingkan Velox dengan Laravel atau Symfony tidak relevan, karena kerangka kerja ini bermain di area yang sama sekali berbeda, juga perlu disebutkan bahwa Velox jauh lebih sederhana daripada lumen atau ramping.
| Direktori | Keterangan |
|---|---|
bootstrap | Di sinilah Velox bootstrap aplikasi. Anda biasanya tidak perlu mengubah apa pun di direktori ini, kecuali jika Anda ingin memperluas fungsionalitas Velox di luar hal -hal dasar. |
bin | Di sinilah PHP Executable ditempatkan. Anda dapat dengan bebas menambahkan milik Anda, atau menghapus seluruh direktori. |
app | Di sinilah logika backend Anda sendiri akan ditempatkan. Anda sebagian besar akan bekerja di sini untuk bagian backend dari aplikasi Anda. |
classes | Di sinilah file sumber Velox hidup. Anda seharusnya tidak menyentuh apa pun di sini kecuali Anda ingin membuat versi Velox Anda sendiri. |
functions | Di sinilah semua fungsi yang dimuat dalam aplikasi langsung. Anda dapat dengan bebas menambahkan milik Anda, atau menghapus seluruh direktori. |
includes | Di sinilah semua file yang harus dimuat sebelumnya akan ditempatkan. Anda dapat dengan bebas menambahkan milik Anda, atau menghapus seluruh direktori. |
themes | Di sinilah semua tema frontend Anda akan ditempatkan. Anda sebagian besar akan bekerja di sini untuk bagian frontend dari aplikasi Anda. |
config | Di sinilah semua file konfigurasi akan hidup. Semua file di sini akan dapat diakses menggunakan kelas Config saat runtime. |
storage | Di sinilah Velox akan menulis cache dan log. Anda juga dapat menggunakan direktori ini untuk menyimpan aset di seluruh pemasangan. |
public | Di sinilah Anda harus menempatkan index.php Anda dengan symlink untuk aset statis ( assets/ direktori tema aktif misalnya) untuk keamanan maksimum. Anda dapat dengan bebas menghapus direktori ini jika Anda mau. |
vendor | Di sinilah dependensi komposer Anda akan ditempatkan. Anda dapat dengan bebas menghapus direktori ini jika Anda tidak ingin menggunakan komposer. |
Saran: Sebagian besar file yang tercantum dalam direktori ini didokumentasikan. Lihatlah mereka untuk mempelajari lebih lanjut tentang Velox.
Titik masuk untuk aplikasi Velox adalah index.php , di sini Anda perlu memerlukan bootstrap/autoload.php , daftarkan beberapa rute dengan penangan mereka menggunakan Router::class , dan mulai router. Ini semua yang Anda butuhkan untuk memiliki aplikasi Velox yang berfungsi.
<?php
require ' bootstrap/autoload.php ' ;
Router:: handle ( ' / ' , function () {
return View:: render ( ' home ' , [ ' title ' => ' Home ' ]);
});
Router:: start (); Selain itu, Anda dapat menambahkan tudung tengah menggunakan Router::middleware() dan/atau mengatur penangan untuk 404 dan 405 tanggapan menggunakan {global.errorPages.CODE} nilai konfigurasi.
Atau, Anda dapat mengekstrak "bagian pendaftaran rute" dalam file sendiri dan memberi tahu Velox tentangnya menggunakan bootstrap/additional.php . Mulai dari v1.2.0 Velox melakukannya secara default, file includes/routes/web.php adalah tempat Anda harus mendaftarkan rute Anda. Router juga akan mulai secara otomatis jika tidak dimulai secara eksplisit.
Catatan: Agar Velox berfungsi dengan benar dan aman, Anda perlu mengarahkan semua permintaan ke titik masuk aplikasi ( index.php ) dan memblokir semua permintaan ke file PHP lainnya di server (lihat .htaccess.dist untuk memulai dengan Apache).
Tabel berikut mencantumkan semua file konfigurasi yang dikirimkan dengan Velox.
| File konfigurasi | Keterangan |
|---|---|
global.php | File konfigurasi ini berisi beberapa variabel global yang digunakan oleh hampir semua kelas (konfigurasi APP-lebar). |
router.php | File konfigurasi ini dapat digunakan untuk mengganti Router::class . |
session.php | File konfigurasi ini berisi konfigurasi sesi, digunakan oleh Session::class . |
database.php | File konfigurasi ini berisi kredensial basis data, digunakan oleh Database::class . |
auth.php | File konfigurasi ini berisi konfigurasi otentikasi, digunakan oleh Auth::class . |
theme.php | File konfigurasi ini dapat digunakan untuk mengedit/memperluas konfigurasi tema. |
view.php | File konfigurasi ini dapat digunakan untuk menyesuaikan semuanya tentang tampilan. Ini digunakan oleh The View::class . |
data.php | File konfigurasi ini dapat digunakan untuk memberikan data sewenang -wenang apa pun, yang kemudian akan disuntikkan dalam Data::class . |
cli.php | File konfigurasi ini dapat digunakan untuk mengaktifkan/menonaktifkan perintah atau mengubah argumen mereka. |
Fakta: Anda dapat dengan bebas menambahkan file konfigurasi Anda sendiri juga, yang perlu Anda lakukan adalah membuat file baru di bawah /config dan menambahkan konfigurasi Anda ke dalamnya. Velox akan tahu tentang file ini dan memuatnya di aplikasi. Anda dapat mengakses konfigurasi Anda melalui Config::get('filename.whateverKeyYouWrote') .
Kelas Velox dibagi dalam empat ruang nama:
MAKSVeloxMAKSVeloxBackendMAKSVeloxFrontendMAKSVeloxHelperTabel berikut mencantumkan semua kelas yang tersedia dengan deskripsi mereka:
| Kelas | Keterangan |
|---|---|
VeloxApp | Kelas yang berfungsi sebagai kontainer layanan dasar untuk Velox. |
BackendEvent | Kelas yang menawarkan fungsi penanganan acara sederhana (pengiriman dan mendengarkan). |
BackendConfig | Kelas yang memuat semuanya dari direktori /config dan menjadikannya sebagai array yang dapat diakses melalui dot-notation. |
BackendRouter | Kelas yang berfungsi sebagai router dan titik masuk untuk aplikasi. |
BackendGlobals | Kelas yang berfungsi sebagai abstraksi/pembungkus untuk bekerja dengan superglobal. |
BackendSession | Kelas yang menawarkan antarmuka sederhana untuk bekerja dengan sesi. |
BackendController | Kelas abstrak yang berfungsi sebagai pengontrol dasar yang dapat diperluas untuk membuat penangan untuk router. |
BackendDatabase | Kelas yang mewakili basis data dan menangani operasi basis data. |
BackendModel | Kelas abstrak yang berfungsi sebagai model dasar yang dapat diperluas untuk membuat model khusus. |
BackendAuth | Kelas yang berfungsi sebagai sistem otentikasi bagi pengguna. |
FrontendData | Kelas yang berfungsi sebagai tas/penyimpanan data yang diakses yang dapat diakses melalui dot-notation. |
FrontendView | Kelas yang membuat tampilan file (tata letak, halaman, dan parsial) dengan kemampuan untuk memasukkan file tambahan, membagi konten halaman menjadi beberapa bagian dan tampilan cache yang diberikan. |
FrontendHTML | Kelas yang berfungsi sebagai antarmuka yang lancar untuk menulis HTML dalam PHP. Ini juga membantu menciptakan elemen HTML dengan cepat. |
FrontendPath | Kelas yang berfungsi sebagai resolver jalur untuk jalur/URL yang berbeda dari aplikasi. |
HelperDumper | Kelas yang membuang variabel dan pengecualian dalam pemformatan yang bagus. |
HelperMisc | Kelas yang berfungsi sebagai pemegang untuk berbagai fungsi utilitas lain -lain. |
Catatan: Ini semua yang disediakan paket Velox di luar kotak.
Fakta: App , Event , Config , Router , Globals , Session , Database , Auth , Data , View , HTML , kelas Path alias di root namespace untuk kemudahan penggunaan.
Fungsi Velox dibagi menjadi file -file ini:
helpers.php : Di sinilah fungsi pembantu untuk kelas Velox hidup, ini terutama fungsi yang mengembalikan instance kelas atau alias beberapa metode di atasnya.html.php : Di sinilah fungsi helper HTML hidup, ini tidak lain adalah alias untuk fungsi PHP yang paling banyak digunakan dengan HTML.Tabel berikut mencantumkan semua fungsi yang tersedia dan ke kelas/grup mana mereka berada:
| Kelas/grup | Fungsi |
|---|---|
App::class | app() ,abort() ,terminate() |
Event::class | event() |
Config::class | config() |
Router::class | router() ,handle() ,redirect() ,forward() |
Database::class | database() |
Globals::class | globals() |
Session::class | session() ,flash() ,csrf() |
Auth::class | auth() |
View::class | view() ,render() ,render_layout() ,render_page() ,render_partial() ,section_push() ,section_reset() ,section_start() ,section_end() ,section_yield() ,include_file() |
Data::class | data() ,data_has() ,data_get() ,data_set() |
HTML::class | html() |
Path::class | path() ,app_path_current() ,app_url_current() ,app_path() ,app_url() ,theme_path() ,theme_url() ,assets_path() ,assets_url() |
Dumper::class | dd() ,dump() ,dump_exception() |
| Pembantu HTML | he() , hd() , hse() , hsd() , st() , nb() |
Fakta: Anda dapat dengan bebas menambahkan fungsi Anda sendiri juga, yang perlu Anda lakukan adalah membuat file baru di bawah /functions dan menambahkan fungsi Anda ke dalamnya. Velox akan tahu tentang file ini dan memuatnya di aplikasi.
Velox dilengkapi dengan beberapa perintah praktis yang dapat Anda gunakan untuk melakukan beberapa tugas berulang. Anda dapat menjalankan perintah ini menggunakan php bin/{command-name} .
Tabel berikut mencantumkan semua perintah yang tersedia dengan deskripsi mereka.
| Memerintah | Keterangan |
|---|---|
app-serve | Perintah ini memulai server pengembangan. |
app-mirror | Perintah ini mencerminkan aplikasi di Direktori /public . |
config-cache | Perintah ini menyimpan konfigurasi saat ini. |
config-dump | Perintah ini mencampakkan konfigurasi saat ini dengan penyorotan sintaks. |
cache-clear | Perintah ini menghapus cache. |
Anda dapat menyesuaikan perintah ini menggunakan file config/cli.php . Di sini Anda dapat mengaktifkan/menonaktifkannya atau memberikan argumen yang berbeda untuk mereka.
Jika Anda ingin membuat semua perintah ini dapat diakses melalui satu antarmuka. Lihatlah campuran paket saya yang lain, yang akan melakukannya untuk Anda dan bahkan lebih banyak lagi.
Velox dibangun di sekitar gagasan tema , sebuah tema dibagi menjadi empat direktori:
assets/ direktori adalah tempat semua aset statis Anda yang terkait dengan tema ini akan ditempatkan.layouts/ direktori adalah tempat Anda menentukan tata letak Anda. Tata letak dalam terminologi Velox adalah framing luar halaman web.pages/ direktori adalah tempat Anda meletakkan konten spesifik untuk setiap halaman, halaman kemudian akan dibungkus dengan beberapa tata letak pilihan Anda dan akhirnya diterjemahkan. Halaman dalam terminologi Velox adalah konten sebenarnya dari halaman web.partials/ Directory adalah tempat Anda meletakkan semua tema yang dapat digunakan kembali, yang kemudian akan digunakan dalam tata letak, halaman, atau parsial lainnya. Contoh yang baik untuk sebagian bisa: komponen , termasuk , dan elemen konten . Anda dapat menyesuaikan perilaku tema menggunakan file config/theme.php . Di sini Anda dapat mengatur tema aktif dengan kunci active . Tema dapat mewarisi satu sama lain dengan mengatur induk dengan kunci parent . Anda juga dapat mengubah struktur direktori tema jika Anda ingin menggunakan kunci paths . Konfigurasi lain (Caching misalnya) yang layak untuk dilihat yang berkaitan dengan tema dapat ditemukan di file config/view.php .
Saran: Anda dapat melihat tema velox yang disediakan untuk melihat bagaimana semua hal bekerja bersama dalam praktik.
themes/velox/layouts/main.phtmlthemes/velox/pages/home.phtmlthemes/velox/partials/text-image.phtml Untuk menambahkan kelas Anda sendiri, gunakan app/ direktori, di sinilah Anda harus menempatkan logika bisnis sendiri. Perhatikan bahwa Anda harus mengikuti PSR-4 agar Velox memuat kelas Anda. Lihat app/Controller/DefaultController.php , untuk mendapatkan ide.
Berikut adalah daftar beberapa file penting yang harus Anda pertimbangkan saat bekerja dengan Velox:
autoload/additional.php .config/data.php .includes/routes/web.php (mulai dari v1.2.0 ).includes/events/system.php (Mulai dari v1.2.0 ). <?php
namespace App Model ;
use MAKS Velox Backend Model ;
class Person extends Model
{
protected static ? string $ table = ' persons ' ;
protected static ? array $ columns = [ ' id ' , ' first_name ' , ' last_name ' , ' age ' , ...];
protected static ? string $ primaryKey = ' id ' ;
public static function schema (): string
{
// return SQL to create the table
}
} <?php
use App Model Person ;
// creating/manipulating models
$ person = new Person (); // set attributes later via setters or public assignment.
$ person = new Person([ ' first_name ' => $ value , . . . ]); // set attributes in constructor
$ person -> get ( ' first_name ' ); // get an attribute
$ person -> set ( ' last_name ' , $ value ); // set an attribute
$ person -> getFirstName (); // case will be changed to 'snake_case' automatically.
$ person -> setLastName ( $ value ); // case will be changed to 'snake_case' automatically.
$ person -> firstName ; // case will be changed to 'snake_case' automatically.
$ person -> lastName = $ value ; // case will be changed to 'snake_case' automatically.
$ attributes = $ person -> getAttributes (); // returns all attributes.
$ person -> save (); // persists the model in the database.
$ person -> update ([ ' first_name ' => $ value ]); // updates the model and save changes in the database.
$ person -> delete (); // deletes the model from the database.
Person:: create ( $ attributes ); // creates a new model instance, call save() on the instance to save it in the database.
Person:: destroy ( $ id ); // destroys a model and deletes it from the database.
// fetching models
$ count = Person:: count (); // returns the number of models in the database.
$ person = Person:: first ();
$ person = Person:: last ();
$ person = Person:: one ([ ' first_name ' => ' John ' ]);
$ persons = Person:: all ([ ' last_name ' => ' Doe ' ], $ order , $ offset , $ limit );
$ person = Person:: find ( $ id ); // $id is the primary key of the model.
$ persons = Person::find( ' first_name ' , ' John ' , ' last_name ' , ' Doe ' . . .); // or
$ persons = Person:: find ([ ' first_name ' => ' John ' , ' last_name ' => ' Doe ' ]);
$ persons = Person:: findByFirstName ( ' John ' ); // fetches using an attribute, case will be changed to 'snake_case' automatically.
$ persons = Person:: where ( ' first_name ' , ' = ' , $ value ); // fetches using a where clause condition.
$ persons = Person:: where ( ' last_name ' , ' LIKE ' , ' %Doe ' , [[ ' AND ' , ' age ' , ' > ' , 27 ], ...], ' age DESC ' , $ limit , $ offset );
$ persons = Person:: fetch ( ' SELECT * FROM @table WHERE `first_name` = ? ' , [ $ value ]); // fetch using raw SQL query. <?php
namespace App Controller ;
use MAKS Velox Backend Controller ;
use App Model Person ;
class PersonsController extends Controller
{
public function indexAction ()
{
$ persons = Person:: all ();
return $ this -> view -> render ( ' persons/index ' , [
' title ' => ' Persons ' ,
' persons ' => $ persons
]);
}
// other CRUD actions ...
/**
* Persons search action.
*
* @route("/persons/search", {GET})
*/
public function searchAction ()
{
// ...
}
/**
* Persons middleware.
*
* @route("/persons/*", {GET, POST})
*/
public function personsMiddleware ()
{
// ...
}
} Fakta: Operasi CRUD (yaitu: index , create , store , show , edit , update , destroy ) terdaftar dan dikonfigurasi secara default. Untuk mendaftarkan rute Anda sendiri secara otomatis, gunakan @route("<path>", {<http-verb>, ...}) anotasi. Lihat Controller::registerRoutes() DocBlock untuk mempelajari lebih lanjut.
Fakta: Untuk membuat model tersedia sebagai properti untuk pengontrol ( $this->model ), gunakan Controller::associateModel() . Lihat Controller::associateModel() DocBlock untuk mempelajari lebih lanjut.
Saran: Jika dalam mode produksi, sebagai jalan pintas, melempar pengecualian dengan kode yang cocok {global.errorPages.CODE} nilai konfigurasi akan membuat halaman kesalahan yang sesuai. Misalnya, saat melempar new Exception('Not found', 404) membentuk pengontrol, halaman kesalahan 404 yang dikonfigurasi akan diterjemahkan dan akan disampaikan pesan pengecualian. Jika halaman tidak dikonfigurasi, halaman 500 kesalahan akan diterjemahkan sebagai fallback sebagai gantinya.
Velox tidak memiliki cara untuk memvalidasi data. Lihat paket saya yang lain, yang akan melakukannya untuk Anda dan bahkan lebih.
{# theme/pages/persons/index.phtml #}
{! @extends 'theme/pages/persons/base' !}
{! @block content !}
{! @super !}
< h1 > {{ $title } } </ h1 >
{! @if ( isset ( $persons ) && count ( $persons ) ) !}
< ul >
{! @foreach ( $persons as $person ) !}
< li > {{ $person -> firsName } } {{ $person -> lastName } } </ li >
{! @endforeach !}
</ ul >
{! @endif !}
{! @endblock !} Saran: Lihat model Person dan PersonsController untuk melihat contoh yang realistis.
Velox dilengkapi dengan mesin templatingnya sendiri. Mesin templating ini sangat intuitif dan mudah bergaul, jika Anda memiliki pengalaman dengan mesin templating lainnya, mempelajari itu akan menjadi masalah menit. Perhatikan bahwa penggunaan mesin templating ini adalah opsional. Anda dapat menggunakan PHP mentah dalam pandangan Anda.
Tabel berikut mencantumkan semua tag yang tersedia dan apa yang mereka lakukan:
| Menandai | Keterangan |
|---|---|
{! @extends 'path/to/template' !} | Perluas templat, blok dari template ini akan diwarisi. |
{! @include 'path/to/file' !} | Sertakan file, ini akan diterjemahkan sebelum dimasukkan (tidak dapat mengakses variabel konteks). |
{! @embed 'path/to/file' !} | Sematkan file, ini akan dimasukkan sebagaimana adanya (dapat mengakses variabel konteks). |
{! @block name !}{! @endblock !} | Buat blok untuk membungkus beberapa kode. |
{! @super !} | Gunakan di dalam blok dalam templat yang diperluas untuk mewarisi konten blok induk. |
{! @block(name) !} | Cetak blok. Perlu dipanggil setidaknya sekali untuk membuat blok. |
{! @foreach ($vars as $var) !}{! @endforeach !} | Struktur kontrol (loop, jika pernyataan, ...). Semua struktur kontrol PHP tersedia ( if , jika else , elseif , do , while , for , foreach , continue , switch , break , return , require , incert, include ) dengan sintaks yang sama tetapi hanya diawali dengan simbol @ jika struktur kontrol adalah kata pertama dalam tag. |
{! $var = '' !} | Penugasan variabel. Konten dapat berupa variabel atau ekspresi PHP yang valid. |
{{ $var }} | Cetak variabel. Konten dapat berupa variabel atau ekspresi PHP apa pun yang dapat dilemparkan ke string. |
{{{ $var }}} | Cetak variabel tanpa melarikan diri. Konten dapat berupa variabel atau ekspresi PHP apa pun yang dapat dilemparkan ke string. |
{# This is a comment #} | Komentar sesuatu. Ini akan menjadi komentar PHP (tidak akan tersedia di HTML akhir). |
Saran: Lihatlah pandangan persons PersonsController dalam tema Velox untuk contoh yang realistis.
Mulai dari v1.4.0 Velox datang dikirim dengan sistem otentikasi bawaan yang sederhana. Sistem ini sangat sederhana dan mudah digunakan.
<?php
use MAKS Velox Backend Auth ;
// instantiate the Auth class
$ auth = new Auth (); // or Auth::instance();
// register a new user
$ status = $ auth -> register ( ' username ' , ' password ' );
// unregister a user
$ status = $ auth -> unregister ( ' username ' );
// log in a user
$ status = $ auth -> login ( ' username ' , ' password ' );
// log out a user
$ auth -> logout ();
// authenticate a user model
Auth:: authenticate ( $ user );
// check if there is a logged in user
$ status = Auth:: check ();
// retrieve the current authenticated user
$ user = Auth:: user ();
// add HTTP basic auth
Auth:: basic ([ ' username ' => ' password ' ]); Saran: Lihat UsersController untuk melihat contoh yang realistis.
Velox adalah proyek open-source yang dilisensikan di bawah lisensi MIT .
Hak Cipta (C) 2021 Marwan al-Soltany. Semua hak dilindungi undang -undang.