开始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主页的公仔,会换衣服

 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm注释的快捷键_pycharm注释比较多怎么办

    pycharm注释的快捷键_pycharm注释比较多怎么办用鼠标选中需要注释的代码,三次按下:shift+‘即可快速注释

    2022年8月28日
    4
  • javascript中function用法_年终总结反思不足之处

    javascript中function用法_年终总结反思不足之处整理了JavaScript中函数Function的各种,感觉函数就是一大对象啊,各种知识点都能牵扯进来,不单单是 Function 这个本身原生的引用类型的各种用法,还包含执行环境

    2022年8月4日
    6
  • GATK流程_diskeeper怎么用

    GATK流程_diskeeper怎么用一、使用GATK前须知事项:(1)对GATK的测试主要使用的是人类全基因组和外显子组的测序数据,而且全部是基于illumina数据格式,目前还没有提供其他格式文件(如IonTorrent)或者实验设计(RNA-Seq)的分析方法。(2)GATK是一个应用于前沿科学研究的软件,不断在更新和修正,因此,在使用GATK进行变异检测时,最好是下载最新的版本,目前的版本是2.8.1(2014-02

    2025年8月25日
    4
  • iphonex适配游戏_Unity+iPhoneX适配方案[通俗易懂]

    作者:范世青王天宇17年下半年,苹果传出新一代iPhone的消息——iPhoneX。随之而来的还有他不同于以往任意一代iPhone的刘海设计。一时间,iPhoneX的适配问题迅速在产品圈流传开。而作为一个线上手游的客户端工程师,我在和团队共同历经了为iPhoneX适配的艰难岁月后,终于在产品上市之日,获得了商店首批适配推荐。那么iPhoneX适配到底有什么需要注意的点,又应该采取什么方案呢?&…

    2022年4月7日
    60
  • 一起用Python做个车牌自动识别系统,好玩又实用!

    一起用Python做个车牌自动识别系统,好玩又实用!前言前段时间,用PyQt5写了两篇文章,关于Python自制一款炫酷音乐播放器、自定义桌面动画挂件。有粉丝问我,为什么要用PyQt5,效果是不是比Tkinter赞?之前没接触过PyQt5,能不能多分享一些这方面的开发案例?今天就继续给大家分享一个实战案例,带大家一起用Python的PyQt5开发一个车牌自动识别系统!首先一起来看看最终实现的车牌识别系统效果图:下面,我们就开始介绍如何实现这款自动车牌识别系统。一、核心功能设计总体来说,我们首先要进行UI界面构建设计,根据车牌识别系统功能进行画面排

    2022年6月14日
    39
  • ID卡复制教程(使用T5577卡复制4100卡)

    ID卡复制教程(使用T5577卡复制4100卡)1ID卡的常见类型与区别国内常见的普通ID卡多为EM4100或EM4102卡,其特点是不可修改ID号。为了复制普通ID卡,通常采用T5577或EM4305卡(俗称ID白卡),其特点是内部EEPROM可读可写,修改卡内EEPROM的内容即可修改卡片对外的ID号,达到复制普通ID卡的目的。本文以T5577卡复制普通EM4100卡。读者需具备基本的电子DIY能力。多说一句,ID…

    2022年6月10日
    366

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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