はじめに
私はすでに同様の記事を書きましたが、それは非常に不完全で、例がありませんでしたので、私は二度目の試みをして、この問題を最も完全に解決しようとすることに決めました!
この記事では、フレームワークの開発のすべての複雑さを考慮しません。1つの記事のフレームワーク内に配置することはできないためです。 ただし、特定のプロジェクトの学習または実装を選択する際に役立つこれらのニュアンスを十分に詳細に説明できます。 比較はYii2とLaravelになります。 これはかなり全体的なトピックであり、その結果は通常、誰もが自分のやり方で良いと言うことを理解しています。 私は、両方で働いた人として、フレームワークを選択するための私のアプローチを説明しようとします、そして、私は彼らのマイナス面とプラス面を最も客観的に示すようにします。
すぐにSymfonyを検討していない理由について警告します。
実際、Symfonyは低レベルのフレームワークであり、たとえば、独自の開発フレームワークを作成するなど、大規模なプロジェクトの基礎となることがよくあります。 原則として、LaravelやYii2と比較することはできません。これらのコンポーネントは実装で使用されるためです。 symfonyは、ほとんどすべてのシステムをニーズに合わせて柔軟にカスタマイズできる非常に強力な製品ですが、小さな典型的なタスクのターンキーソリューションとして使用できるものはほとんどありません。 GitHubでは、Symfonyで同じYii2またはLaravel用に作成された多くのライブラリまたは拡張機能を見つけることができます。
Yii2
Yii2から始めましょう。これは私が研究した最初のフレームワークです。 このフレームワークは、OOPに関する最小限の知識で非常に簡単に研究できると言わなければなりません。
長所
- 習得が簡単、起動が少ない
- 多くの組み込みインターフェースソリューションを備えています
- モデル、コントローラー、CRUDの優れたジェネレーター
短所
- あまり柔軟性のないルーティング
- 不十分な開発(新しいバージョンのリリース)
- フロントエンドとバックエンドの結合ライブラリが多すぎる
次に、それぞれについて詳しく説明します。 一般的に最後のマイナスは一見して明らかではないように見えますが、別の言い方をする方法はわかりません。
学ぶのは簡単 。 このフレームワークは本当に簡単に習得でき、小さなプロジェクトに2日間座った後、すでに冷静にコードを書き始めています。 勉強を始めるには、ロシア語で十分な文学はありませんが、これは英語の優れた参考文献によって十分に補われています。 最後の手段としてGoogle翻訳者。 今、私はうれしいです、それはそう前でした。 最近では、ガイドとドキュメントを使用してサイトを更新しましたが、現在はロシア語のガイドがあります 。 APIに関する情報はまだ翻訳されていませんが、複雑なものはありません。 技術的な英語の知識が少しでも、すべてが非常に単純です 。受け入れられる方法、与えられる方法、および一般的に行うことを簡単に説明しているため、情報はここにあります 。
インターフェース用の組み込みソリューションは小さな本全体で説明できますが、簡単に説明します。 ブートストラップは、残念ながら3度目にシステムに組み込まれ、それに関連付けられた独自のモジュールがたくさんあります。
ブートストラップのレイアウトが貧弱で、Yii2の組み込みメソッドを使用して、ポップアップモーダルダイアログ、ウィンドウ、ドロップダウンリスト、スポイラーなどを作成することもできます。
これは、多くのサイト、およびYii2の公式ドキュメントでも見られる小さな例です。
モーダルウィンドウの例
use yii\bootstrap\Modal;
Modal::begin([
'header' => '<h2>Hello world</h2>',
'toggleButton' => ['label' => 'click me'],
'footer' => ' ',
]);
echo 'Say hello...';
Modal::end();
, <h2>Hello world</h2>, click me, , «Say hello...» « ».
'data-target="#id-modal"' , . Yii2 — , , backend — . , . , .
, , - . , , , , - ,
// Multiple select without model
echo Select2::widget([
'name' => 'state_2',
'value' => '',
'data' => $data,
'options' => ['multiple' => true, 'placeholder' => 'Select states ...']
]);
, Select2, kartik-v, GitHub.
, input select Select2.
, , - , , .
, — , . Yii2, GUI , . , , , , , . , gii.
:
. CRUD . laravel, , , , ( , ), foreign key, «» , , .
, , .
CRUD , , . .. , CRUD . , , , .
- . , , , . , . . CMS . , , Yii2 .
. , .
. Yii :
/*----*/
/**
* Your Annotation
* @return mixed
*/
public function actionIndex()
{
return $this->render('index', []);
}
/*----*/
action , Index. , actionArticlesList, : /_/articles-list. , :
- , .
, :
[
/*---*/
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'<module:\w+>/<controller:\w+>/<action:(\w|-)+>' => '<module>/<controller>/<action>',
'<module:\w+>/<controller:\w+>/<action:(\w|-)+>/<id:\d+>' => '<module>/<controller>/<action>',
],
],
/*---*/
]
rules, . , , .
, . , Yii2 bootstrap-3, .
, — . , , (views). , , , php html, .
WebPack, Gulp . , Yii2 — . , css assets .
, frontend backend, Yii2 . .
Laravel
Yii2, Yii2
- scss
- Blade
- REST API
- IDE- ,
- Yii2
WebPack, , , frontend WebPack .
laravel mix, WebPack, , , .
mix'a
let mix = require('laravel-mix');
mix.js('resources/assets/js/app.js', 'public/js')
.sass('resources/assets/sass/app.scss', 'public/css');
, . , frontend .
, . , frontend .
scss, Vue, Laravel, Vue.js .
Blade, Twig, . , , Twig Blade. Blade, , , Twig , Blade Laravel.
. symfony, , Route, .
Yii2 , , . , , - (POST, GET ..), . , Blade.
/*---*/
Route::get('/dashboard/newsList', 'DashboardController@newsList')->name('dashboard/newsList'); // GET, ,
Route::middleware('auth')->delete('/dashboard/newsList/news/{uuid}', 'APINewsController@DeleteNews'); // DELETE, , URL uuid, .
/*---*/
middleware, - . . middleware , routes.
. , HTTP- .
Yii2, , , , . Yii2 yii\rest\ActiveController — REST FULL API, , .
, Laravel REST API. , « REST API»
Laravel . , , . , .
.
, Laravel. , ! , , - .
. , Illuminate\Database\Eloquent\Model, where, select .., . . , , . . , , , IDE . — IDE-helper, . GitHub. GitHub .
« Yii2» , . Symfony Yii2 . , , , , .
, Laravel Yii2, , Yii2 , . , .
. , , . , , . , , .
. , Yii2, . , , , .
Laravel Yii2, - - . , , , . Yii2 — . .. , . , , .. , , Yii2 . , . Yii2 .
, « ?». — .
Yii2 , , .
Laravel — . frontend'a backend'a.
, , . ! !
Symfony
Yii2
Laravel
:
Yii Select2 kartik-v.
Select2.
Yii2 ( )
API Yii2 ( )
:
IDE-helper Laravel (GitHub)
Laravel ( , )