• Laravel 入门


    1、使用 composer 创建项目

    composer create-project --prefer-dist laravel/laravel blog
    
    报错1
     [ErrorException]proc_get_status() has been disabled for security reasons
    
    报错2
     [SymfonyComponentProcessExceptionRuntimeException] The Process class relies on proc_open
    
    解决:

    打开php.ini文件,搜索 disable_functions,找到如下类似内容:
    disable_functions=passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_get_status....
    找到 proc_get_status、proc_open 删除然后重启php服务;
    或者:注释掉这行;

    # disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_get_status....
    
    报错3
    Failed to enable crypto 
    failed to open stream: operation failed
    
    解决

    更换composer镜像源,可以执行尝试以下几种:
    更换成阿里镜像:

    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
    

    更换成Laravel China镜像:

    composer config -g repo.packagist composer https://packagist.laravel-china.org
    

    更换成中国全量镜像:

    composer config -g repo.packagist composer https://packagist.phpcomposer.com
    

    2、配置域名、然后去访问、出现如下表示安装OK

    报错1:
    UnexpectedValueException
    The stream or file "../storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied
    
    报错2:
    ErrorException (E_WARNING)
    file_put_contents(../storage/framework/views/f5a79bdb17b116aa71ccd551417888a08e8480aa.php): failed to open stream: Permission denied
    
    解决:
    以上两个都是 failed to open stream: Permission denied 意思是没有权限
    
    chmod -R 777 ./storage/
    

    3、了解项目目录

    .env
    .env.example
    .gitattributes
    .gitignore
    artisan*
    composer.json
    composer.lock
    package.json
    phpunit.xml
    readme.md
    server.php
    webpack.mix.js
    app/
        // 目录包含应用程序的核心代码。你应用中几乎所有的类都应该放在这里。稍后我们会更深入地了解这个目录的细节。
    bootstrap/  
        // 目录包含引导框架并配置自动加载的文件。
        // 该目录还包含了一个 cache 目录,存放着框架生成的用来提升性能的文件,比如路由和服务缓存文件。
    config/ 
        // 目录,顾名思义,包含应用程序所有的配置文件。我们鼓励你通读这些文件,以便帮助你熟悉所有可用的选项。
    database/ 
        // 目录包含数据填充和迁移文件。你还可以把它作为 SQLite 数据库存放目录。
    public/ 
        // 目录包含了入口文件 index.php,它是进入应用程序的所有请求的入口点。
        // 此目录还包含了一些你的资源文件(如图片、JavaScript 和 CSS)。
    resources/ 
        // 目录包含了视图和未编译的资源文件(如 LESS、SASS 或 JavaScript)。
        // 此目录还包含你所有的语言文件。
    routes/
        // 目录包含了应用的所有路由定义,
        // Laravel 默认包含了几个路由文件:web.php、api.php、 console.php 和 channels.php。
        // web.php 文件包含 RouteServiceProvider 放置在 web 中间件组中的路由,
        // 它提供会话状态、CSRF 防护和 cookie 加密。
        // 如果你的应用不提供无状态的、RESTful 风格的 API,则所有的路由都应该在 web.php 文件中定义。
        // api.php 文件包含 RouteServiceProvider 放置在 api 中间件组中的路由,它提供了频率限制。
        // 这些路由都是无状态的,所以通过这些路由进入应用请求旨在通过令牌进行身份认证,并且不能访问会话状态。
        // console.php 文件是定义所有基于闭包的控制台命令的地方。
        // 每个闭包都被绑定到一个命令实例并且允许和命令行 IO 方法进行简单的交互。
        // 尽管这些文件没有定义 HTTP 路由,但它也将基于控制台的入口点(路由)定义到应用程序中。
        // channels.php 用来注册你的应用支持的所有的事件广播渠道的地方。
    storage/
        // storage 目录包含编译的 Blade 模板、基于文件的会话和文件缓存、以及框架生成的其他文件。
        // 这个目录被细分成 app、framework 和 logs 三个子目录。
        // app 目录可以用来存储应用生成的任何文件。
        // framework 目录用来存储框架生成的文件和缓存。
        // logs 目录包含应用的日志文件。
    tests/
    vendor/
        // 目录包含了你的 Composer 依赖包
    

    4、数据迁移

    参考地址:https://learnku.com/docs/laravel/5.5/migrations/1329
    数据库迁移就像是数据库的版本控制,可以让你的团队轻松修改并共享应用程序的数据库结构。
    迁移通常与 Laravel 的数据库结构生成器配合使用,让你轻松地构建数据库结构。
    如果你曾经试过让同事手动在数据库结构中添加字段,那么数据库迁移可以让你不再需要做这样的事情。

    4.1、生成迁移文件

    使用 Artisan 命令 make:migration 来创建迁移:

    php artisan make:migration create_users_table
    

    新的迁移文件会被放置在 database/migrations 目录中。
    每个迁移文件的名称都包含了一个时间戳,以便让 Laravel 确认迁移的顺序。

    4.2、修改迁移文件

    迁移类通常会包含两个方法:up 和 down。
    up 方法可为数据库添加新的数据表、字段或索引,而 down 方法则是 up 方法的逆操作。
    主要字段:https://learnku.com/docs/laravel/5.5/migrations/1329#columns

    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name')->comment('用户名');
            $table->string('pwd')->comment('用户密码');
            $table->enum('status', ['1', '2', '3', '4'])->default('1')->comment('状态:1注册 2激活 3违规 4注销 默认:1注册');
            $table->timestamp('last')->comment('最后一次登录时间');
            $table->timestamps();
        });
    }
    

    4.3、运行迁移文件、生成数据表

    php artisan migrate
    

    5、控制器、模型层

    除了在路由文件中以闭包的形式定义所有的请求处理逻辑外,还可以使用控制器类来组织此类行为。
    控制器能够将相关的请求处理逻辑组成一个单独的类。
    控制器被存放在 app/Http/Controllers 目录下。
    创建对应的控制器:

    php artisan make:controller UsersController
    

    创建对应的模型层:

    php artisan make:model Users
    

    如果你使用了路由模型绑定,并且想在资源控制器的方法中使用类型提示,你可以在生成控制器的时候使用如下命令:

    php artisan make:controller UsersController --resource --model=Users
    

    6、路由

    所有的 Laravel 路由都在 routes 目录中的路由文件中定义,这些文件都由框架自动加载。
    routes/web.php 文件用于定义 web 界面的路由。
    这里面的路由都会被分配给 web 中间件组,它提供了会话状态和 CSRF 保护等功能。
    routes/api.php 文件中的路由都是无状态的,并且被分配了 api 中间件组。
    大多数的应用构建,都是以在 routes/web.php 文件定义路由开始的。
    可以通过在浏览器中输入定义的路由 URL 来访问 routes/web.php 中定义的路由。

    6.1、基本路由

    1、构建基本路由只需要一个 URI 与一个 闭包 ,这里提供了一个非常简单优雅定义路由的方法:

    // 访问:http://www.a.cc/first
    Route::get('/first', function () {
        return 'Hello World';
    });
    

    2、绑定指定的控制器与方法

    // 访问: http://www.a.cc/user
    Route::get('/user', 'UserController@index');
    

    3、返回视图层文件

    // 访问:http://www.a.cc/show
    // view中参数1、必填、指定模版的名称
    // view中参数2、可选、数组类型、
    Route::get('/show', function(){
        return view('Users.login', ['name'=>'名字'] );
    });
    

    6.2、可用的路由的方法

    路由器允许你注册能响应任何 HTTP 请求的路由:

    Route::get($uri, $callback);
    Route::post($uri, $callback);
    Route::put($uri, $callback);
    Route::patch($uri, $callback);
    Route::delete($uri, $callback);
    Route::options($uri, $callback);
    

    有的时候你可能需要注册一个可响应多个 HTTP 请求的路由,这时你可以使用 match 方法,也可以使用 any 方法注册一个实现响应所有 HTTP 请求的路由:

    Route::match(['get', 'post'], '/', function () {
        //
    });
    
    Route::any('/', function () {
        //
    });
    
    剩下的有时间在写。。。。。
  • 相关阅读:
    文字有阴影效果
    asp.net(c#)将彩色图片变灰阶图片
    C#异步调用的方法
    PHP获取指定月份的第一天开始和最后一天结束的时间戳函数
    php 获取当前用户的IP
    网站前端性能优化
    grep命令的使用
    学C++的经验总结
    主键、唯一键与唯一索引的区别
    shell的比较运算符
  • 原文地址:https://www.cnblogs.com/laowenBlog/p/12757347.html
Copyright © 2020-2023  润新知