开始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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • stm32 带通滤波器_带通滤波器详解_带通滤波器工作原理_带通滤波器原理图

    stm32 带通滤波器_带通滤波器详解_带通滤波器工作原理_带通滤波器原理图带通滤波器(band-passfilter)是一个国家允许使用特定频段的波通过发展同时进行屏蔽其他频段的设备。比如RLC振荡回路问题就是这样一个可以模拟带通滤波器。带通滤波器是一种滤波器,它可以在一定的频率范围内通过频率分量,但将其他范围内的频率分量衰减到非常低的水平,与带阻滤波器的概念形成对比。模拟带通滤波器的一个例子是电阻电感电容电路(RLC电路)。这些滤波器也可以通过将低通滤波器与高通…

    2022年5月2日
    29
  • 微信小程序车牌键盘

    微信小程序车牌键盘

    2021年6月9日
    462
  • jstat使用_jvm常用命令

    jstat使用_jvm常用命令如何判断JVM是否存在内存问题呢?判断JVM垃圾回收是否正常?一般的top指令基本上满足不了这样的需求,因为它主要监控的是总体的系统资源,很难定位到java应用程序。Jstat是JDK自带的一个轻量级小工具。全称“JavaVirtualMachinestatisticsmonitoringtool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能…

    2022年9月12日
    0
  • python基础之五大标准数据类型

    python基础之五大标准数据类型学习一门语言,往往都是从HelloWorld开始。但是笔者认为,在一个黑框框中输出一个“你好,世界”并没有什么了不起,要看透事物的本质,熟悉一门语言,就要了解其底层,就是我们常常说的基础。本篇从p

    2022年7月5日
    18
  • 什么是java?为什么要学Java? 学Java有什么用?

    什么是java?为什么要学Java? 学Java有什么用?肯定会有许多人或多或少都和我一样,当偶然在电视上看到程序员对着电脑飞快敲下一串代码,不禁为他们发出惊叹,想象着有一天自己也能这样。是的,有一天你也能这样!因为我已经实现了!下面我们来看看到底什么是JAVA?为什么要学习,学习了有什么用?先给大家看一下19年计算机语言排行什么是java?为什么要学Java?学Java有什么用?1.什么是JavaJava它就是一种编程语言,别的编程语言能干的事,它都能干。2.编程语言这么多,我为什么选择Java呢?简单易学首先Java是一个面向对象的编程语言

    2022年7月7日
    25
  • c# dllimport用法(强中台能力)

    大家在实际工作学习C#的时候,可能会问:为什么我们要为一些已经存在的功能(比如Windows中的一些功能,C++中已经编写好的一些方法)要重新编写代码,C#有没有方法可以直接都用这些原本已经存在的功能呢?答案是肯定的,大家可以通过C#中的DllImport直接调用这些功能。

    2022年4月11日
    152

发表回复

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

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