PHPを使用してシンプルなWebサイトを構築する最速の方法!
インストール
Veloxについて
建築
config
クラス
関数
コマンド
テーマ
拡張ベロックス
MVC
テンプレート
認証
Changelog
ドキュメント
あなたがこのプロジェクトが好きで、その開発をサポートしたいなら、それを与えることを感謝します!

デモをチェックするか、 REPLで再生してください。
あなたは読んでいると感じますか? marwanalsoltany.github.io/veloxのドキュメントWebサイトの完全なAPIをご覧ください。
composer create-project marwanalsoltany/velox my-velox-app注:バージョン/ブランチに応じて、 --stability=devを追加する必要がある場合があります。また、開発依存関係をインストールしないように--no-devフラグを追加することもできます。
git clone https://github.com/MarwanAlsoltany/velox.git my-velox-app事実:他のサードパーティパッケージを使用したくない場合。 Gitを使用してVeloxをインストールするだけで十分です。
veloxを.zipまたは.tar.gzとしてダウンロードし、サーバーWebルートディレクトリに抽出します。
アドバイス: Veloxをすばやくテストし、Webサーバーを使用できる場合は、インストール方法を使用して、内部Veloxディレクトリからphp bin/app-serveを実行してください。このコマンドはlocalhost:8000の開発Webサーバーをスピンアップします(システムに少なくともPHPをインストールする必要があることに注意してください)。
Veloxは軽量のマイクロフレームワークであり、PHP Joyfulを使用してシンプルなWebサイトを作成します。将来のウェブサイトをより速く、より効率的に作成するのに役立ちます。 PHPを使用してWebサイトを作成するプロセスを促進するコンポーネントを提供します。 Veloxには、依存関係、Veloxパッケージ、必要なものすべてがプロジェクト自体に含まれていません。 Veloxが提供するのは、構成、パスデータ、登録ルート、データベースとの対話、ビューのレンダリング、例外の処理、 Autoloadコード、および資産の解決方法だけです。 MVC設計パターンのビューとコントローラー部分を提供します。 v1.3.0を見つけると、Veloxはモデルパーツも提供し、完全に機能するMVCフレームワークになり、 v1.4.0から始まるシンプルな認証システムも搭載されています。必要なのは最終的にはHTMLファイルだけであれば、Veloxは静的サイトジェネレーターとして使用することもできます。
Veloxは特定の問題を解決するために作成されました。これは、ダイナミックと静的の間にあるWebサイトを構築する方法です。フレームワークや使用されないものを伴う多くのCMSを使用することなく、数ページのシンプルなWebサイトを作成する方法は、軽量で最小限で、ポイントまで直接です。
仲介プロジェクトがある場合は、Veloxを使用することはお勧めしません。確立されたフレームワークを使用する方が良いでしょう。 Veloxは、ホイールを再発明するためのイニシアチブではありません。ベロックスを小さなプロジェクトのスターターキットとして見ることができます。
Veloxには非常に特別なユースケースでシンプルなWebサイトがあり、ここでは非常にシンプルなWebサイトを意味します。利点は、あなたが必要としないものを持っていないことです。これらのフレームワークはまったく異なる領域で再生されるため、VeloxをLaravelまたはSymfonyと比較することは無関係です。また、VeloxはLumenまたはSlimよりもはるかに簡単であることに言及する価値があります。
| ディレクトリ | 説明 |
|---|---|
bootstrap | これは、Veloxがアプリケーションをブートストラップする場所です。通常、ベロックス機能を基本的なもの以外に拡張したい場合を除き、このディレクトリで何も変更する必要はありません。 |
bin | これは、PHP実行可能ファイルが配置される場所です。自由に追加するか、ディレクトリ全体を削除することができます。 |
app | これは、独自のバックエンドロジックが配置される場所です。ここでは、アプリのバックエンド部分のためにここで作業します。 |
classes | これは、Veloxソースファイルのライブです。あなた自身のバージョンのVeloxを作りたいのでない限り、ここで何も触れてはいけません。 |
functions | これは、アプリケーションにロードされているすべての機能がライブである場所です。自由に追加するか、ディレクトリ全体を削除することができます。 |
includes | これは、プリロードする必要があるすべてのファイルが配置される場所です。自由に追加するか、ディレクトリ全体を削除することができます。 |
themes | これは、すべてのフロントエンドテーマが配置される場所です。ここでは、アプリのフロントエンド部分のためにここで作業します。 |
config | これは、すべての構成ファイルがライブする場所です。ここのすべてのファイルは、実行時にConfigクラスを使用してアクセスできます。 |
storage | これは、Veloxがキャッシュとログを書く場所です。このディレクトリを使用して、インストール全体の資産を保存することもできます。 |
public | これは、最大限のセキュリティのために、 index.php静的資産のSymlink(たとえば、アクティブなテーマassets/ディレクトリ)で配置する必要がある場合です。必要に応じて、このディレクトリを自由に削除できます。 |
vendor | これは、作曲家の依存関係が配置される場所です。 Composerを使用したくない場合は、このディレクトリを自由に削除できます。 |
アドバイス:これらのディレクトリにリストされているほとんどのファイルが文書化されています。それらを調べて、Veloxの詳細をご覧ください。
Veloxアプリのエントリポイントはindex.phpです。ここでは、 bootstrap/autoload.phpを要求し、 Router::classを使用してハンドラーにいくつかのルートを登録し、ルーターを起動する必要があります。これは、動作するVeloxアプリを用意するために必要なすべてです。
<?php
require ' bootstrap/autoload.php ' ;
Router:: handle ( ' / ' , function () {
return View:: render ( ' home ' , [ ' title ' => ' Home ' ]);
});
Router:: start ();さらに、 Router::middleware()を使用してMiddleWaresを追加し、 {global.errorPages.CODE} config値を使用して404および405応答にハンドラーをセットアップできます。
または、独自のファイルで「登録パーツ」を抽出し、 bootstrap/additional.phpを使用してVeloxにそれを知らせることができます。 v1.2.0から始まるVeloxはデフォルトでそれを行います。ファイルincludes/routes/web.php 。明示的に起動しないと、ルーターも自動的に開始されます。
注: Veloxが正しく安全に動作するためには、すべての要求をアプリケーションエントリポイント( index.php )にリダイレクトし、サーバー上の他のPHPファイルにすべてのリクエストをブロックする必要があります( .htaccess.distを見て、Apacheを開始してください)。
次の表には、Veloxが出荷されるすべての構成ファイルを示します。
| 構成ファイル | 説明 |
|---|---|
global.php | この構成ファイルには、ほぼすべてのクラス(アプリ全体の構成)で使用されるいくつかのグローバル変数が含まれています。 |
router.php | この構成ファイルはRouter::classデフォルトパラメーターをオーバーライドするために使用できます。 |
session.php | この構成ファイルにはセッション構成が含まれており、 Session::classで使用されます。 |
database.php | この構成ファイルには、データベースの資格情報が含まれており、 Database::classで使用されます。 |
auth.php | この構成ファイルには認証構成が含まれており、 Auth::classで使用されます。 |
theme.php | この構成ファイルは、テーマ構成の編集/拡張に使用できます。 |
view.php | この構成ファイルは、ビューに関するすべてをカスタマイズするために使用できます。 View::classで使用されます。 |
data.php | この構成ファイルは、任意のデータを提供するために使用できます。任意のデータは、 Data::classに挿入されます。 |
cli.php | この構成ファイルを使用して、コマンドを有効/無効にするか、引数を変更できます。 |
事実:独自の構成ファイルも自由に追加できます。必要なのは、 /configの下に新しいファイルを作成し、構成を追加することだけです。 Veloxはこのファイルについて知り、アプリケーションにロードします。 Config::get('filename.whateverKeyYouWrote')を介して構成にアクセスできます。
Veloxクラスは4つの名前空間に分かれています。
MAKSVeloxMAKSVeloxBackendMAKSVeloxFrontendMAKSVeloxHelper次の表には、利用可能なすべてのクラスに説明が記載されています。
| クラス | 説明 |
|---|---|
VeloxApp | Veloxの基本的なサービスコンテナーとして機能するクラス。 |
BackendEvent | 単純なイベント処理機能(派遣とリスニング)を提供するクラス。 |
BackendConfig | /configディレクトリからすべてをロードし、ドットノーテーションを介してアクセスできる配列として作成するクラス。 |
BackendRouter | アプリケーションのルーターとエントリポイントとして機能するクラス。 |
BackendGlobals | SuperGlobalsで動作する抽象化/ラッパーとして機能するクラス。 |
BackendSession | セッションで動作するシンプルなインターフェイスを提供するクラス。 |
BackendController | ルーターのハンドラーを作成するために拡張できるベースコントローラーとして機能する抽象クラス。 |
BackendDatabase | データベースを表し、データベース操作を処理するクラス。 |
BackendModel | カスタムモデルを作成するために拡張できる基本モデルとして機能する抽象クラス。 |
BackendAuth | ユーザー向けの認証システムとして機能するクラス。 |
FrontendData | 抽象化されたデータバッグ/ストアとして機能するクラスは、ドットノーテーションを介してアクセスできます。 |
FrontendView | 追加のファイルを含める機能を備えたファイル(レイアウト、ページ、および部分的)を表示するクラス、ページコンテンツをセクションに分割し、ビューをレンダリングするビューをキャッシュするクラス。 |
FrontendHTML | PHPでHTMLを書くための流fluentインターフェイスとして機能するクラス。また、HTML要素をその場で作成するのにも役立ちます。 |
FrontendPath | アプリのさまざまなパス/URLのパスリゾルバーとして機能するクラス。 |
HelperDumper | 変数と例外を優れたフォーマットで捨てるクラス。 |
HelperMisc | さまざまな雑多なユーティリティ機能のホルダーとして機能するクラス。 |
注:これは、Veloxパッケージが箱から出して提供するすべてです。
事実: App 、 Event 、 Config 、 Router 、 Globals 、 Session 、 Database 、 Auth 、 Data 、 View 、 HTML 、 Pathクラスは、使用のためにルートネームスペースにエイリアスされます。
Velox関数はこれらのファイルに分割されます。
helpers.php :これは、veloxクラスのヘルパー機能がライブである場所です。これらは主にクラスまたはエイリアスのインスタンスを返す機能です。html.php :これはHTMLヘルパー機能がライブである場所です。これらは、HTMLで最も使用されているPHP関数のエイリアスに他なりません。次の表には、利用可能なすべての機能と、それらがどのクラス/グループに属するかを示します。
| クラス/グループ | 機能 |
|---|---|
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() |
| HTMLヘルパー | he() 、 hd() 、 hse() 、 hsd() 、 st() 、 nb() |
事実:独自の関数を自由に追加することもできます。必要なのは、 /functionsの下に新しいファイルを作成し、関数を追加することだけです。 Veloxはこのファイルについて知り、アプリケーションにロードします。
Veloxには、いくつかの繰り返しタスクを実行するために使用できる便利なコマンドがいくつかあります。 php bin/{command-name}を使用してこれらのコマンドを実行できます。
次の表には、説明が記載されているすべての利用可能なコマンドを示します。
| 指示 | 説明 |
|---|---|
app-serve | このコマンドは開発サーバーを開始します。 |
app-mirror | このコマンドは/publicディレクトリ内のアプリケーションを反映しています。 |
config-cache | このコマンドは、現在の構成をキャッシュします。 |
config-dump | このコマンドは、現在の構成を構文の強調表示でダンプします。 |
cache-clear | このコマンドはキャッシュをクリアします。 |
config/cli.phpファイルを使用してこれらのコマンドをカスタマイズできます。ここでは、それらを有効/無効にするか、それらについて異なる引数を提供することができます。
これらすべてのコマンドを単一のインターフェイスからアクセスできるようにしたい場合。私の他のパッケージブレンドをチェックしてください。
Veloxはテーマのアイデアを中心に構築されています。テーマは4つのディレクトリに分かれています。
assets/ディレクトリは、このテーマに関連付けられているすべての静的資産が配置される場所です。layouts/ディレクトリは、レイアウトを定義する場所です。 Velox用語のレイアウトは、Webページの外側のフレーミングです。pages/ディレクトリは、すべてのページに固有のコンテンツを配置する場所で、ページは選択したレイアウトでラップされ、最終的にレンダリングされます。 Velox用語のページは、Webページの実際のコンテンツです。partials/ディレクトリは、テーマのすべての再利用可能なピースを配置する場所であり、レイアウト、ページ、またはその他の部分で使用されます。部分的な例は、コンポーネント、含まれるコンポーネント、コンテンツ要素です。 config/theme.phpファイルを使用して、テーマの動作をカスタマイズできます。ここでは、 activeキーでアクティブなテーマを設定できます。テーマは、 parentキーを親に設定することにより、互いに継承できます。 pathsを使用する場合は、テーマディレクトリ構造を変更することもできます。テーマに関係する他の構成(たとえばキャッシュ)は、 config/view.phpファイルに記載されています。
アドバイス:提供されたveloxテーマを見て、すべてのものが実際にどのように連携するかを見ることができます。
themes/velox/layouts/main.phtmlthemes/velox/pages/home.phtmlthemes/velox/partials/text-image.phtml 独自のクラスを追加するには、 app/ディレクトリを使用するには、自分のビジネスロジックを配置する必要があります。 Veloxがクラスをロードするには、PSR-4をフォローする必要があることに注意してください。アイデアを得るには、 app/Controller/DefaultController.php参照してください。
以下は、Veloxを使用する際に考慮すべき重要なファイルのリストです。
autoload/additional.php 。config/data.phpを提供します。includes/routes/web.php ( v1.2.0から開始)。includes/events/system.php 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 ()
{
// ...
}
}事実: CRUDオペレーション(つまり、 index 、 create 、 store 、 show 、 edit 、 update 、 destroy )は登録され、デフォルトで構成されます。独自のルートを自動的に登録するには、 @route("<path>", {<http-verb>, ...})注釈を使用します。詳細については、 Controller::registerRoutes() docblockを参照してください。
事実:モデルをコントローラーのプロパティとして利用できるようにするには、 $this->model )を使用して、 Controller::associateModel()を使用します。詳細については、 Controller::associateModel() docblockを参照してください。
アドバイス:生産モードで、ショートカットとして、コードを一致させる{global.errorPages.CODE}構成を一致させることで例外をスローすると、対応するエラーページが表示されます。たとえば、 new Exception('Not found', 404)がコントローラーを形成すると、構成された404エラーページがレンダリングされ、例外メッセージが渡されます。ページが構成されていない場合、 500エラーページは代わりにフォールバックとしてレンダリングされます。
Veloxには、データを検証する方法はありません。私の他のパッケージMightyをチェックしてください。
{# 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 !}アドバイス: Person ModelとPersonsControllerをチェックして、現実的な例をご覧ください。
Veloxには独自のテンプレートエンジンが付属しています。このテンプレートエンジンは非常に直感的で、他のテンプレートエンジンでの経験がある場合は、数分かかることを学ぶことができます。このテンプレートエンジンの使用はオプションであることに注意してください。ビューで生のPHPを使用するだけです。
次の表には、利用可能なすべてのタグとそれらが何をするかを示します。
| タグ | 説明 |
|---|---|
{! @extends 'path/to/template' !} | テンプレートを拡張すると、このテンプレートのブロックが継承されます。 |
{! @include 'path/to/file' !} | ファイルを含めると、これはインクルージョン前にレンダリングされます(コンテキスト変数にアクセスできません)。 |
{! @embed 'path/to/file' !} | ファイルを埋め込むと、これはそのまま含まれます(コンテキスト変数にアクセスできます)。 |
{! @block name !}{! @endblock !} | いくつかのコードをラップするブロックを作成します。 |
{! @super !} | 拡張テンプレートのブロック内で使用して、親ブロックコンテンツを継承します。 |
{! @block(name) !} | ブロックを印刷します。ブロックをレンダリングするには、少なくとも1回は呼び出される必要があります。 |
{! @foreach ($vars as $var) !}{! @endforeach !} | 制御構造(ループ、ステートメントの場合...)。すべてのPHP制御構造が利用可能です( if 、 else 、 do 、 for 、 foreach 、 continue 、 switch 、 break 、 return 、 require 、conmince、for for、for、for、for、for、for、for elseif for、for、for、for、required、forming、incluse、incluse、 include 、for) while 、コントロール構造がタグの最初の単語である場合、 @シンボルで簡単に付けます。 |
{! $var = '' !} | 可変割り当て。コンテンツは、変数または有効なPHP式になります。 |
{{ $var }} | 変数を印刷します。コンテンツは、文字列にキャストできる変数またはPHP式にすることができます。 |
{{{ $var }}} | 逃げることなく変数を印刷します。コンテンツは、文字列にキャストできる変数またはPHP式にすることができます。 |
{# This is a comment #} | 何かコメントしてください。これはPHPコメントになります(最終HTMLでは利用できません)。 |
アドバイス:現実的な例については、VeloxテーマのPersonsControllerのpersonsの見解を見てください。
v1.4.0から始まるVeloxには、シンプルな内蔵認証システムが付属しています。このシステムは非常にシンプルで使いやすいです。
<?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 ' ]);アドバイス: UsersControllerをチェックして、現実的な例をご覧ください。
Veloxは、 MITライセンスに基づいてライセンスされているオープンソースプロジェクトです。
著作権(c)2021 Marwan al-Soltany。無断転載を禁じます。