laravel

Laravel 默认集成了前端工作流,相比 Yii2 更加利于对前端要求高的项目。

Yii2 中的前端代码和 PHP 代码结合太紧密了,前端代码维护太痛苦,期待 Yii2.1 的改变。

更新补充,Yii2 可以同 Grunt 配合使用,参考:https://github.com/samdark/yii2-cookbook/blob/master/book/structure-asset-processing-with-grunt.md

http://cheats.jesse-obrien.ca/

如果开发人员只负责开发,而不负责项目部署,那么使用 Homestead 最好。

但是,如果项目开发人员也要负责项目的部署和服务器维护,建议使用 vagrant 的 centos/7 box 来从头搭建开发环境。

PS:现在 Homestead 也提供了脚本来保持生产环境和开发环境的统一,剩下的唯一顾虑就是 Homestead 目前只支持 Ubuntu 14/16,CentOS 6/7 的支持还没有。

Homestead

Homestead 是一个预先打包好的 Ubuntu Vagrant box,它包含了所有 Laravel 开发时需要用到的东西,你可以很轻松的通过指定的 Laravel 版本来找到相对应版本的 Homestead 并进行安装。

Homestead 默认安装了 Nginx, PHP7, Redis, Memcached, MySQL, Git, Node.js, NPM 等等。

Homestead 分为两个部分:

- `laravel/homestead` Homestead Vagrant box,通过 Vagrant 下载
- Homestead 管理脚本,通过 git clone

适合国内环境使用的 Homestead

https://laravel-china.org/docs

git clone https://git.coding.net/summerblue/homestead.git Homestead
cd Homestead
git checkout v5.4.0
bash init.sh

生成以下三个文件:

  • Homestead.yaml - 主要配置信息文件,我们可以在此文件中配置 Homestead 的站点和数据库等信息;
  • after.sh - 每一次 Homestead 盒子重置后(provision)会调用的 shell 脚本文件;
  • aliases - 每一次 Homestead 盒子重置后(provision),会被替换至虚拟机的 ~/.bash_aliases 文件中,aliases 里可以放一些快捷命令的定义。

Homestead.yaml 的修改。

默认私有网络的网段要避开局域网网段。如果局域网网段为 192.168.10.* 则 的 ip 需要修改为 192.168.1.10192.168.199.10

公有网络的网段则要和局域网保持一致。

可以删除 key 和 字段,使用用户名 vagrant 和密码 vagrant 登录。

修改配置后,重新加载并应用:

vagrant provision && vagrant reload
  • vagrant provision 是命令 Vagrant 重新加载 Homestead.yaml 配置;
  • vagrant reload 是重启虚拟机使更改生效。

vagrant 操作参考:http://haobing.wang/vagrant

前端工作流

sudo npm install -g cross-env
yarn install --no-bin-links

Artisan 命令

生成 Application key:

php artisan key:generate

其他命令:

php artisan list

数据迁移

php artisan help migrate

建议一开始就使用 artisan 构建数据表。

$ php artisan migrate
Migration table created successfully.
Migrated: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_100000_create_password_resets_table

回滚:

php artisan migrate:rollback
Rolled back:  2014_10_12_100000_create_password_resets_table
Rolled back:  2014_10_12_000000_create_users_table

生成 Model 及 Migration

php artisan make:model Models/Article -m

生成 Controller

php artisan make:controller StaticPagesController

view

后缀名均为 .blade.php 而不是 .php

{{ $var }} - Echo content
{{ $var or 'default' }} - Echo content with a default value
{{{ $var }}} - Echo escaped content
{{-- Comment --}} - A Blade comment
@extends('layout') - Extends a template with a layout
@if(condition) - Starts an if block
@else - Starts an else block
@elseif(condition) - Start a elseif block
@endif - Ends a if block
@foreach($list as $key => $val) - Starts a foreach block
@endforeach - Ends a foreach block
@for($i = 0; $i < 10; $i++) - Starts a for block
@endfor - Ends a for block
@while(condition) - Starts a while block
@endwhile - Ends a while block
@unless(condition) - Starts an unless block
@endunless - Ends an unless block
@include(file) - Includes another template
@include(file, ['var' => $val,...]) - Includes a template, passing new variables.
@each('file',$list,'item') - Renders a template on a collection
@each('file',$list,'item','empty') - Renders a template on a collection or a different template if collection is empty.
@yield('section') - Yields content of a section.
@show - Ends section and yields its content
@lang('message') - Outputs message from translation table
@choice('message', $count) - Outputs message with language pluralization
@section('name') - Starts a section
@stop - Ends section
@endsection - Ends section
@append - Ends section and appends it to existing of section of same name
@overwrite - Ends section, overwriting previous section of same name