开始laravel项目+理解

开始laravel项目+理解一.laravel运行理解Ⅰ.开始,public/index.php此文件有两个作用。①:作为入口的起点,引导构建服务所需要的一切(包括路由,服务容器之类的)。②:作为所有请求的必经之路。请求经过此文件,会被“指派”到合适的路由,中间件等等进行处理。tips:所以用phpstudy的时候,记得设置一下①指定项目的根目录。②指定下路由。我用的nginx,设置的vhost.config文件。画起第一行用以指定项目的根目录,就apache的www文件的意思。第二行是指定所有请求最终会定向

大家好,又见面了,我是你们的朋友全栈君。

一.laravel运行理解

Ⅰ.开始,public/index.php

此文件有两个作用。①:作为入口的起点,引导构建服务所需要的一切(包括路由,服务容器之类的)。②:作为所有请求的必经之路。请求经过此文件,会被“指派”到合适的路由,中间件等等进行处理。

tips:所以用phpstudy的时候,记得设置一下 ① 指定项目的根目录。② 指定下请求对应的文件。我用的nginx,设置的 vhost.config 文件。

nginx配置文件范例画起第一行用以指定项目的根目录,就apache的www文件的意思。第二行是指定所有请求最终会定向到public/index.php这个文件。为啥呢,上面有说

 

生命周期

 —- 第一个请求驾到 —

1. 进入pubic/index.php 文件

2.index.php 加载composer 自动生成的加载设置(我的理解是加载依赖的意思 )

3. 利用 bootstrapper/app.php 生成 Laravel实例一个

4.执行请求处理前的任务(including 错误处理,日志,环境检测),然后请求经过 Http 内核(app/http/kernel.php) (相当于在server系统的层面上对请求弄几个钩子)

5. ….???provider 和服务容器?

6. 请求交给 路由处理

1.1初始化

index.php  –(引导)–>bootstrap/app.php–(到这里)–>config.php–(东西通过provider注册到服务容器)–>构建完成可处理请求

注册服务容器:provider 类(如app/providers文件夹内的)把服务绑定到服务容器上(其实还没绑定)。在config/app.php 内有 providers 数组,在引导 laravel 应用初始化 时,利用该数组进行处理(真的绑定了)

1.2处理请求

请求 –(必经app/http/kernel.php,以使用中间件)–> 进入应用程序 —-> respond

2.1服务容器

一个laravel应用有一个服务容器。服务容器为了编码优雅。感觉起来是一个全局的对象,可通过这个对象上挂载的key,获得对应的实例/工厂函数实例。

具体可见服务容器相关API

比方说,你有10个地方用到了new Camera();这个实例。然后你想在测试的时候把这10个Camera()的功能变成MockCamera()。

如果不用服务容器,你要找10个地方,一个个改成MockCamera()。如果是100个地方呢?

但是如果使用服务容器,原本$camer=new Camera()的地方改成 $camera=app()->make(‘camera’);。

插播,绑定到服务容器的形式是:$this->app->bind(‘camera’,function(){ return new Camera();});。因为绑定了服务容器,所以把Camera改成MockCamera的时候,我只要在绑定这里,把 return 的 new Camera();改成 new MockCamera();,这样,不管是上面提及的10个地方,还是100个地方,都改完了。

Ⅱ 。composer 理解,安装laravel

1 . 目前接触到 4 个命令

  1. inatall / i
  2. update / u (下文提及与 i 的区别)
  3. dump-autoload
  4. create-project
  5. require

2 . 涉及两个文件

  1. composer.json
  2. composer.lock.json

3 . 版本约束

composer 默认会下载稳定版的插件。要是你要alpah,beta等不稳定版本,需要你自己指定

composer ,项目级别对依赖进行管理。意思是,你在A项目玩的天花龙凤,B项目说:阿巴阿巴我什么也不知道。当然,你可以对composer的全局进行设置

composer默认会从packagist中寻找依赖,packagist 是默认来源。如果composer.json中定义了repositories 的话则会从 repositories 中找。但是从指定的 repositories 中找不到的话,还是会从 packagist 中寻找。

composer.json

你要安装什么依赖

composer.lock.json

一个项目中,只要有人运行过composer i 或者composer install 命令,就会生成这个文件。

这个文件用以锁住当前项目使用的依赖版本:

① 对于个人开发:个人项目可能开发 3 年。你项目当前使用依赖 A 的1.0版本。但是 A 依赖一直在更新,3 年后版本更新到4.0,但是你项目不兼容 A 依赖的 4.0 版本。所以composer.lock.json 限制住是1.0版本。

② 对于多人开发:有利于限制多人的依赖版本一致。

composer i 与 composer u

第一次安装的时候用 i ,后面要更新了用u。尝试的时候,只要 i 过一次后,composer.lock.json会再,那么再 i 是不会安装什么东西。需要用到 u ,u 的时候会安装新加的依赖,也会把原有依赖更新到指定版本。

命令 create-project

用以安装一个项目。我用来安装laravel。也可以从 git 上拉取指定版本。但是git拉取的,需要自己手动设置一些东西(使用命令也需要手动设置。配置下.env 什么的)。比方说复制粘贴 .env鸭,执行key:genderate命令鸭,之类的。看你喜欢。自己电脑的话我喜欢用命令。

可以加上 –prefer-dist 参数哦,跟这个相反的是 –prefer-source.前者安装起来快一点,意思是硬盘由的话就从硬盘获取资源装上,可以避开由于安装不正确引起 git 的错误。

安装laravel例子:composer create-project laravel/laravel 项目文件夹名称 laravel版本

为啥是 laravel 是laravel/laravel  呢。为了方便区分。一个项目,用 vendor-name/project-name 来定位到这个项目。laravel这个项目就是 laravel/laravel。

require

指定依赖添加到composer.json中,并根据现状,执行  i  或  u

命令 dump-autoload

目前理解是。因为有的依赖带有autoloade信息。可以通过这个命令,利用新安装依赖带有的autoload信息,自动给你配置东西,达到目的:项目里可以直接用新依赖提供的类。不用你重新安装啥的,就是图个方便。我目前没遇到过这个新依赖方面需要用到这个命令的问题。倒是在多人开发中,别人写的Seeder类找不到了,一直migrate一直报错。用这个就好了。

版本约束

对我而言主要是版本号

getcomposer,org,doc,articles,versions,md

不想写先马着

Ⅲ。Artisan 理解

composer 与artisan 傻傻分不清

artisan 是 laravel提供的命令行接口,用来与larave 应用程序进行交互。比方说,利用 eloquent 进行数据库交互什么的(像seeder那样插入数),你能在项目内做什么,artisan也能做什么。很方便 8 。he

学到了一个概念。文档中介绍artisan,提及到的 REPL ,是 read-eval-print loop 的缩写。像你电脑内命令行那样的东西,意即:输入(命令)read,评估(执行)evalute,输出结果print ,loop(?)。让你一步步根据返回结果,执行命令。

  1. 创建 artisan 。php artisan make:command MyCommand
  2. 描述你的命令
  3. 能用(只要写在app/console/commands文件夹下的会自动注册。或者你在console文件夹下kernel.php中注册)。

命令像你写的一个 function。包含 ① 方法名( 签名:$signature),② 输入(Ⅰ. 参数 。Ⅱ . 选项)

详见:https://learnku.com/docs/laravel/6.x/artisan/5158#arguments

参数跟函数感觉起来差不多。虽然说写法有点区别,参数 的写法是名字。选项带有两个横杠 —

参数是必填的东西,选项是可填的东西,填/不填的情况下可指示布尔值。

都是可以指定默认值的东西

 

 

 

 

我发现一个很有趣的现象,composer主页的公仔,会换衣服

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/139556.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • springboot事务的传播机制[通俗易懂]

    springboot事务的传播机制[通俗易懂]事务的传播机制所谓事务的传播行为是指,如果在开始当前事务之前,一个事务上下文已经存在,此时有若干选项可以指定一个事务性方法的执行行为。(,默认)REQUIRED :如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。SUPPORTS :如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行。MANDATORY :如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。REQUIRES_NEW :创建一个新的事务,如果当前存在事务,则把当前事务挂起。

  • executenonquery报错_sql2008和mysql

    executenonquery报错_sql2008和mysqlExecuteNonQuery()方法主要用户更新数据,通常它使用Update,Insert,Delete语句来操作,其方法返回值意义:对于Update,Insert,Delete语句执行成功是返回值为该命令所影响的行数,如果影响的行数为0时返回的值为0,如果数据操作回滚得话返回值为-1,对于这种更新操作用我们平时所用的是否大于0的判断操作应该没有问题而且比较好,但是对于其他的操作如对数据…

  • Oracle创建表空间和创建临时表空间

    Oracle创建表空间和创建临时表空间/*第1步:创建临时表空间 */createtemporarytablespacekc_temptempfile’C:\app\Administrator\oradata\orcl\kc_temp.dbf’ size50m  autoextendon  next50mmaxsize20480m  extentmanagementlocal;   

  • gg修改器读取文件列表失败怎么弄_gg修改器怎么修改金币

    gg修改器读取文件列表失败怎么弄_gg修改器怎么修改金币VoidInitWCB(WCBfar*lpwcb,shortretType,LPSTRlpBuffer,shortcBufferSize);InitWCB的参数说明如下:@@0541701.JPG;表2@@例如,下面这段程序是获取所选区域的字符串字体情况:WCBwcb;//Word的参数和返回值传递的数据区short isbold;InitWCB(&wcb,TypeShort,NULL,0…

  • idea激活码2021年3月最新激活码在线激活

    idea激活码:https://javaforall.cn/100143.html,全栈程序员必看教程网idea激活码推荐

  • 几款主流好用的markdown编辑器介绍

    几款主流好用的markdown编辑器介绍Markdown编辑器 Markdown其实在2004年就有了,不过之前一直很小众,这几年随着相关应用平台的发展,Markdown以其独到的优势迅速火起来了。Markdown编辑器使用一套格式标记语言来对文档内容进行排版和格式显示。而Markdown的标记很少,常用的也就十个左右,它是一种非常轻量的标记语言。 Markdown编辑器深受技术人员的喜爱,Markdown可以用来编写说明…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号