Laravel5.0 学習 01 はじめに

WBOY
WBOYオリジナル
2016-06-23 13:14:241097ブラウズ

この記事では、laravel5.0.22を例に説明します。 eNVIRONMENT要件-LARAVEL5.0フレームワークにはいくつかのシステム要件があります:

PHPバージョン> = 5.4

MCRYPTPHP拡張

PENSSLPHP拡張

MBSTRINGPHP拡張

トコーケイザーPHP拡張

PHP5.5 PHP JSON 拡張パッケージを手動でインストールします。 Ubuntu を使用している場合は、apt-get install php5-json を通じてインストールできます。

Laravel を使用するべきですか?

Zhihu ネチズンからの議論: PHP フレームワーク Laravel または Codeigniter? https://www.zhihu.com/question/21617669

CI はネイティブ PHP に近く、元の PHP コードに基づいて多くのクラスをカプセル化しているため、拡張が容易です。別の観点から見ると、最も原始的な 3 層アーキテクチャであるアーキテクチャは存在しません。

Laravel は、Java や RoR などの他のフレームワークのエッセンスを多く吸収した単なるイノベーションであり、基本的には既存の Php フレームワークの中で最も強力であり、拡張性も非常に優れています。チーム運営に適しています。

初心者にとって、Laravel は一見すると本来の PHP の書き方とは異なります。いわゆるエレガントとは、コードが合理化されており、再利用可能であることを意味します。 Laravel 開発者は全員、PHP 界のトップエキスパートであり、新しいテクノロジーやアーキテクチャの使用に慣れています。それでも、Laravel の一般的なポイントをマスターすれば、徐々に始めるのは難しくないことがわかります。あらゆる面でCIを上回っており、実用性は非常に高い。 (出典: Zhihu)

簡単な提案:

研究のための個人プロジェクトの場合は、Laravel が推奨されます。アウトソーシングまたは企業プロジェクトの場合は、Codeigniter または ThinkPHP が推奨されます。

機能

RESTfulルーティング;

精巧に設計されたBladeテンプレートエンジン、軽量かつ柔軟;

Railsの成功から借用した合理的なORMモデルレイヤー、Eloquent ORM;

移行データベースバージョンシステムとシーディング;
パッケージ管理ツールComposerを使用春への扉を開きます。

テストドライブを重視し、コア全体が完全なテストを受けており、高品質のコードが使用されます。

コマンドラインドライバーは、高度な自動化を実現できます (効率、コードジェネレーターに注意してください)。 、Rails から学びましょう;

PHP の新しいバージョンの機能を適切に使用して、コードを書くのがもっと楽しくなり、時代に追いつくことができます;

前向きなコミュニティ、これは非常に重要です、誰もが良いものを学び、作成していますツール、開発をスピードアップします、プログラミングの効率を向上させ、新しい知識をすぐに受け入れます。
PHP 標準化のサポート PHP-FIG — PHP Framework Interop Group

詳細:
1. 最高の PHP フレームワークは何ですか?なぜ? - Charlie Jadeの答え - Zhihu
https://www.zhihu.com/question/19558755/answer/23062110

2, php - CI、TP、Symfonyなどの他のフレームワークと比較したLaravelフレームワークの利点は何ですか.? - SegmentFault
https://segmentfault.com/q/1010000000489103

インストール


多くの人がこのステップで行き詰まってしまいます。 Composer を認識していないか、Composer を使用してインストールできないかのいずれかです。

まだ Composer を知らない場合は、まず次のサイトにアクセスして学習してください:


1. Packagist / Composer China フルミラー

http://pkg.phpcomposer.com/

2. Composer 中国語 Web サイト

http:// www.phpcomposer.com/

Composer を使用してインストールできない場合は、ウェアハウスにアクセスできない、つまりブロックされている可能性があります。まず Composer ウェアハウスのソースを更新します:

# 修改 composer 的全局配置文件(推荐方式)# 打开命令行窗口(windows用户)或控制台(Linux、Mac 用户)并执行如下命令:composer config -g repo.packagist composer https://packagist.phpcomposer.com

それから正式にインストールを開始します。

ここでは例としてLaravel 5.0バージョンを示します(PHPバージョン>= 5.4)。 5.1 バージョンでは、この一連のチュートリアルで説明した主要な要素 (認証システム) が削除されているため、5.1 を使用して学習することはお勧めできません。

# 指定5.0.22版本,项目目录是learnlaravel5composer create-project laravel/laravel learnlaravel5 5.0.22

インストールを待機しています (約 5 分かかります):
Installing laravel/laravel (v5.0.22)  - Installing laravel/laravel (v5.0.22)    Downloading: 100%Created project in learnlaravel5Loading composer repositories with package informationInstalling dependencies (including require-dev) from lock file  - Installing jakub-onderka/php-console-color (0.1)    Downloading: 100%  - Installing vlucas/phpdotenv (v1.1.0)    Downloading: 100%  - Installing symfony/var-dumper (v2.6.4)    Downloading: 100%  - Installing symfony/translation (v2.6.4)    Downloading: 100%  - Installing symfony/security-core (v2.6.4)    Downloading: 100%  - Installing symfony/routing (v2.6.4)    Downloading: 100%  - Installing symfony/process (v2.6.4)    Downloading: 100%  - Installing symfony/http-foundation (v2.6.4)    Downloading: 100%  - Installing symfony/event-dispatcher (v2.6.4)    Downloading: 100%  - Installing psr/log (1.0.0)    Downloading: 100%  - Installing symfony/debug (v2.6.4)    Downloading: 100%  - Installing symfony/http-kernel (v2.6.4)    Downloading: 100%  - Installing symfony/finder (v2.6.4)    Downloading: 100%  - Installing symfony/console (v2.6.4)    Downloading: 100%  - Installing swiftmailer/swiftmailer (v5.3.1)    Downloading: 100%  - Installing nikic/php-parser (v1.1.0)    Downloading: 100%  - Installing jakub-onderka/php-console-highlighter (v0.3.1)    Downloading: 100%  - Installing dnoegel/php-xdg-base-dir (0.1)    Downloading: 100%  - Installing psy/psysh (v0.4.1)    Downloading: 100%  - Installing nesbot/carbon (1.17.0)    Downloading: 100%  - Installing mtdowling/cron-expression (v1.0.4)    Downloading: 100%  - Installing monolog/monolog (1.13.1)    Downloading: 100%  - Installing league/flysystem (1.0.2)    Downloading: 100%  - Installing jeremeamia/superclosure (2.1.0)    Downloading: 100%  - Installing ircmaxell/password-compat (v1.0.4)    Downloading: 100%  - Installing doctrine/inflector (v1.0.1)    Downloading: 100%  - Installing danielstjules/stringy (1.9.0)    Downloading: 100%  - Installing symfony/filesystem (v2.6.4)    Downloading: 100%  - Installing classpreloader/classpreloader (1.2.0)    Downloading: 100%  - Installing laravel/framework (v5.0.16)    Downloading: 100%  - Installing phpdocumentor/reflection-docblock (2.0.4)    Downloading: 100%  - Installing symfony/yaml (v2.6.4)    Downloading: 100%  - Installing sebastian/recursion-context (1.0.0)    Downloading: 100%  - Installing sebastian/exporter (1.2.0)    Downloading: 100%  - Installing doctrine/instantiator (1.0.4)    Downloading: 100%  - Installing phpspec/prophecy (v1.3.1)    Downloading: 100%  - Installing phpspec/php-diff (v1.0.2)    Downloading: 100%  - Installing phpspec/phpspec (2.1.1)    Downloading: 100%  - Installing phpunit/php-token-stream (1.4.0)    Downloading: 100%  - Installing sebastian/version (1.0.4)    Downloading: 100%  - Installing sebastian/global-state (1.0.0)    Downloading: 100%  - Installing sebastian/environment (1.2.1)    Downloading: 100%  - Installing sebastian/diff (1.2.0)    Downloading: 100%  - Installing sebastian/comparator (1.1.1)    Downloading: 100%  - Installing phpunit/php-text-template (1.2.0)    Downloading: 100%  - Installing phpunit/phpunit-mock-objects (2.3.0)    Downloading: 100%  - Installing phpunit/php-timer (1.0.5)    Downloading: 100%  - Installing phpunit/php-file-iterator (1.3.4)    Downloading: 100%  - Installing phpunit/php-code-coverage (2.0.15)    Downloading: 100%  - Installing phpunit/phpunit (4.5.0)    Downloading: 100%...Generating autoload files> php artisan clear-compiled> php artisan optimizeGenerating optimized class loaderCompiling common classes> php -r "copy('.env.example', '.env');"> php artisan key:generateApplication key [4FunRLeVWE0jc6QTs3h8vNbDnoa4Qi8Q] set successfully.

インストール後にアクセスできます:

http://localhost/laravel5/public/index.php

プロジェクト構造

app|---Commands|---Console|---Events|---Exceptions|---Handlers|---Http    |---Controllers 控制器    |---Middleware 中间件    |---Requests 请求    |---routes.php 路由|---Providers|---Services|---User.php 模型文件bootstrapconfigdatabasepublicresources|---lang|---views 视图    |---welcome.blade.php    |---home.blade.phpstorage|---logstestsvendor.envartisancomposer.jsonserver.php

Laravel フレームワークには、追加の設定権限が必要なディレクトリがあります: ストレージ ディレクトリとベンダー ディレクトリは、サーバー権限によって書き込み可能である必要があります。

Route

ルーティング ファイルは app/Http/routes.php にあります。

デフォルト設定:

Route::get('/', 'WelcomeController@index');//匹配根目录到WelcomeController/indexRoute::get('home', 'HomeController@index');//匹配home到HomeController/index//路由组Route::controllers([    'auth' => 'Auth\AuthController',    'password' => 'Auth\PasswordController',]);

Controllers

Controller パス: app/Http/Controllers。

例: WelcomeController.php

<?php namespace App\Http\Controllers;class WelcomeController extends Controller {    public function index()    {        return view('welcome');    }}

ルートコントローラーから継承: Controller.php

<?php namespace App\Http\Controllers;use Illuminate\Foundation\Bus\DispatchesCommands;use Illuminate\Routing\Controller as BaseController;use Illuminate\Foundation\Validation\ValidatesRequests;abstract class Controller extends BaseController {    use DispatchesCommands, ValidatesRequests;}

URLの生成

url() メソッドは、仕様に準拠した URL を生成できます。

echo url('greeting');//输出:http://localhost/laravel5/public/index.php/greeting

設定

設定ファイル: .env (データベースと MAIL 設定を含む)。

config ディレクトリにも関連する設定があります。

Model

Laravel4シリーズとは異なり、古いapp/modelsディレクトリは完全に削除されました。対照的に、Laravel5 モデル ファイルはアプリ ディレクトリに配置され、デフォルトで App 名前空間を使用します。

例: Blog.php

<?php namespace App;use Illuminate\Database\Eloquent\Model;class Blog extends Model {    public function listAll(){        return $this->all();    }}

Views

ビューのルート パス: resource/views。

ビューとコントローラーの対応関係:

例:

view('welcome'); //对应视图根路径下welcome.blade.phpview('admin.pages.edit', $data); //对应对应视图根路径下admin/pages/edit.blade.php

コントローラー内のビュー ファイル コードは実際には HTML です。ただし、一部のラベルはカスタマイズされています。

ビュー ファイルでは、PHP ネイティブ構文を使用して、渡されたデータを取得できます。
<html>    <body>        <h1>Hello, <?php echo $name; ?></h1>    </body></html>

或者使用Laravel的Blade模板标签:双大括号:

<html>    <body>        <h1>Hello, {{$name}}</h1>    </body></html>

控制器(WelcomeController.php)里是这样的:

public function greeting() {    return view('greeting', ['name' => 'James']);}

注意,测试的时候要新建路由:

Route::get('greeting', 'WelcomeController@greeting');

访问:http://localhost/laravel5/public/index.php/greeting

传递数据到视图

// 使用传统的方法$view = view('greeting')->with('name', 'Victoria');// 使用魔术方法$view = view('greeting')->withName('Victoria');

模板标签语言

示例文件:
layout.blade.php 母视图

<html> <body>    <h1>Laravel Quickstart</h1>        @yield('content') </body> </html>

users.blade.php 普通视图

@extends('layout')@section('content')    Users!@endsection

1、输出:使用双花括号: {{$name}}。
2、继承:@extends,将copy一份母视图过来。
3、区域替换:@section...@endsection,该标签内的内容将替换在母视图使用@yield定义的内容。
4、条件语句:@if...@endif。

@if (count($errors) > 0)<div class="alert alert-danger">    Error!</div>@endif

5、数据遍历:@foreach...@endforeach

@foreach($users as $user)    <p>{{ $user->name }}</p>@endforeach

数据库操作

数据库相关配置文件都在 config/database.php。默认从.env文件中读取配置。

目前 Laravel 支持四种数据库系统: MySQL、Postgres、SQLite、以及 SQL Server。

读写分离:

'mysql' => [    'read' => [        'host' => '192.168.1.1',    ],    'write' => [        'host' => '196.168.1.2'    ],    'driver'    => 'mysql',    'database'  => 'database',    'username'  => 'root',    'password'  => '',    'charset'   => 'utf8',    'collation' => 'utf8_unicode_ci',    'prefix'    => '',],

使用DB类进行CURD

需要先引入。

use Illuminate\Support\Facades\DB;

例如:

public function greeting() {    $results = DB::select('select * from blog where id = ?', [1]);    print_r($results);exit;}

输出:

Array ( [0] => stdClass Object ( [id] => 1 [uid] => 1 [title] => test [content] => hello laravel5! [flag] => 1 [create_time] => 0 [update_time] => 0 ) )

更多方法(来自官方文档):

//执行 Select 查找$results = DB::select('select * from users where id = ?', [1]);$results = DB::select('select * from users where id = :id', ['id' => 1]);//执行 Insert 语法DB::insert('insert into users (id, name) values (?, ?)', [1, 'Dayle']);//执行 Update 语法DB::update('update users set votes = 100 where name = ?', ['John']);执行 Delete 语法DB::delete('delete from users');//执行一般语法DB::statement('drop table users');//监听查找事件DB::listen(function($sql, $bindings, $time){    //});//数据库事务处理//你可以使用 transaction 方法,去执行一组数据库事务处理的操作:DB::transaction(function(){    DB::table('users')->update(['votes' => 1]);    DB::table('posts')->delete();});//手动事务DB::beginTransaction();DB::rollback();DB::commit();//获取连接//若要使用多个连接,可以通过 DB::connection 方法取用:$users = DB::connection('foo')->select(...);//你也可以取用原始底层的 PDO 实例:$pdo = DB::connection()->getPdo();//有时候你可能需要重新连接到特定的数据库:DB::reconnect('foo');//如果你因为超过了底层 PDO 实例的 max_connections 的限制,需要关闭特定的数据库连接,可以通过 disconnect 方法:DB::disconnect('foo');//查找日志记录//Laravel 可以在内存里访问这次请求中所有的查找语句。然而在有些例子下要注意,比如一次添加 大量的数据,可能会导致应用程序耗损过多内存。 如果要启用日志,可以使用 enableQueryLog 方法:DB::connection()->enableQueryLog();//要得到执行过的查找纪录数组,你可以使用 getQueryLog 方法:$queries = DB::getQueryLog();

学习资料

推荐教程:
Laravel 5 系列入门教程(一)【最适合中国人的 Laravel 教程】 - 岁寒
https://lvwenhan.com/laravel/432.html

Laravel 5 中文文档:

  1. http://laravel-china.org/docs/5.0
  2. http://www.golaravel.com/laravel/docs/5.0/

更多:

  • Laravist |Laravel Vuejs Bootstrap 视频教程
    https://laravist.com/

  • LaraBase——全栈工程师之家
    http://laravelbase.com/

  • Laravel - The PHP Framework For Web Artisans
    http://laravel.com/

  • laravel/laravel
    https://github.com/laravel/laravel

  • 声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。