我的编程空间,编程开发者的网络收藏夹
学习永远不晚

PHP面试宝典之Laravel篇

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

PHP面试宝典之Laravel篇

artisan常用命令?

查看laravel版本:php artisan --version重启队列:php artisan queue:restart监听队列:php artisan queue:listen删除失败队列:php artisan queue:forget列出所有失败队列:php artisan queue:failed创建新的job类:php artisan make:job创建控制器:php artisan make:controller设置最大运行时间:php -d memory_limit=-1清除视图缓存: php artisan view:clear清除缓存:php artisan cache:clear清除路由缓存:php artisan route:cache列出artisan命令列表:php artisan list清理陪住文件缓存:php artisan config:cache

laravel的生命周期?

从入口文件index.php开始

引入composer,利用au to load自动加载第三方依赖

实例化app容器,绑定http、console内核

在http内核中,将中间件注册到路由器

路由器将请求转发到绑定的控制器,进行逻辑处理

处理完成,路由器再将结果分发到响应服务

通过send方法将响应结果输出

最后终止请求和响应,完成整个请求处理和响应

laravel框架的原理和设计模式?

首先laravel是基于mvc设计模式,将应用程序程序分为三个主要部分,控制器、模型、视图

其次laravel有很多核心组件,路由(路由处理请求,映射到控制器)、控制器(实现路由指向的方法)、中间件(在请求到达控制器之前和之后执行一些操作)、请求和响应(request、respone)、视图、数据库、

laravel中使用到的设计模式和技术:依赖注入(request请求)、事件系统(event和订阅者模式)、观察者模式、门面模式等

ServiceProvider服务提供者?

将服务注册到容器中,将创建权限交给容器

低耦合,当服务发生变动时,很少改动
例:视图服务提供者(将用户菜单栏目异步的形式显示到视图中去)

laravel门面技术?

laravel的所有门面都定义在facade命名空间下
门面为程序中绑定的类,提供了一个静态接口,我们可以不用实例化类,直接通过静态方法,使用这些类;如:cache缓存,db数据库,redis缓存,view视图,session等

注意:门面使用要谨慎,不易过多,容易导致类作用范围的膨胀,导致类越来越大

laravel依赖注入?

构造函数注入、属性注入、方法注入

当一个对象a,需要另一个对象b协助时,通常情况下,需要在a中创建b的实例,但依赖注入是使用容器c创建b的实例,然后通过传参的方式,注入到a中,再使用a直接调用b中的方法,也就是说在a中不需要创建b的实例;例:request请求就是依赖注入

laravel的中间件?

全局中间件、路由中间件、路由组中间件

进的顺序:全局中间件》路由组中间件》路由中间件

出的顺序:路由中间件》路由组中间件》全局中间件

定义中间件类(middleware目录下新增)

注册中间件(kernel.php文件中,找到对应的分组,引入中间件类)

分配中间件(控制器构造方法中调用,或着在路由最后调用)
例:auth中间件、cookie中间件、登录验证、空白字符过滤、伪造请求验证等

laravel的事件系统(event)是为了解决什么问题?

实现系统解耦,一个对象状态改变时,给其他依赖于它的对象通知,并自动更新;实现了系统解耦,保证高度的协作,利用的是观察者模式

事件监听器?

注册事件和监听者;EventServiceProvider中listen数组中注册事件和监听者

定义事件类;app/events目录下,构造方法,接收并创建对象

定义监听者类;app/listeners目录下,构造方法,接收事件实例,handle方法处理业务

分发事件;event:dispatch(参数)或者event(事件对象),当事件发生,监听者handle方法被触发

事件订阅者?

创建订阅者类;在app/listeners目录下,其中subscribe方法分配事件(事件=>订阅者类中的方法名)

注册订阅者;EventServiceProvider中$subscribe属性中添加订阅者类

分发事件;当事件发生,订阅者根据subscribe中的对应关系,找到对应方法并执行

事件监听器和事件订阅者的区别?

事件监听器:一个监听器只能监听一个事件,每个事件可以有多个监听器;例:一件事的发生可能会导致后续三四个事件的触发

订阅者模式:一个类中监听多个事件;例:一个日志类,可以监听多个事件,例如登录,注册,退出等

laravel的路由是怎么设计的?有什么用?

路由系统是基于:http请求方法(如:get、post、put等)和url设计的

路由被定位为url和控制器方法之间的映射关系

路由组的作用?

用于组织路由,为它们应用共同的中间件和命名空间

什么是roc容器?

roc容器是用来解析一些不依赖于容器的类和接口,提高性能和降低内存占用。不是一个独立的容器,而是一种实现依赖注入的技术

在a类的构造方法中传入b类,在AppServiceProvider类的注册方法中定义一个解析器

roc容器和依赖注入的区别?

两者不同概念,依赖注入是设计模式,roc是laravel中的一种特殊容器

roc容器是一种轻量级的解析器技术,仅使用于一些简单的类和接口的解析;依赖注入可以实现更复杂的依赖注入情况

laravel的模型层是如何实现事务的?

通过db类的事务方法:transAction 方法实现;
在该方法中可以操作多个模型或数据表,全部成功,则提交事务,有一个失败,就回滚事务;
参考:事物的底层实现

yii框架的生命周期?

入口文件,web/index.php

入口脚本加载应用配置,并创建一个应用实例

应用实例通过请求组件,解析请求的路由

应用创建一个控制器去处理请求

控制器创建一个操作实例并针对操作执行过滤器

如果任何一个过滤器返回失败,则操作退出

如果所有过滤器都通过,操作将被执行

操作会加载一个数据模型,或许是来自数据库

操作会渲染一个视图,把数据模型提供给它

渲染结果返回给响应组件

响应组件发送渲染结果给用户浏览器

yii框架目录结构?

frontend :前台应用;

backend:后台应用;控制器、模型、视图目录

console:命令行

common:公共文件

vendor:第三方类库,composer自动加载

控制器:TestOneController.php

路由:test-one/add

方法名:actionAdd,必须加action

视图显示:$this->render(‘add’)

重定向方法:$this->redirect([‘test/show’]);

session对象:YII::app->session;

判断session是否开启:$session->isAction;

开启session:$session->open();

模型:静态方法tableName中return 表名即可

视图输出:,

yii2和yii的区别

yii2中使用了composer

事务,增加了begin和commit事务事件,在开始事务和提交事务时触发

yii2引入了资源包的概念,通过assets目录下的appasset类

数据库使用

查询一条:
1:是user::model()->find(条件)

是user::find()->where()->one()

查询多条:
1:是user::model()->findAll()

是user::find()->where()->all()

新增对象转数组方法:
asArray()方法直接将结果转为数组

yii2查询方法:

user::find()->one()user::find()->all()user::find()->count()user::find()->each(10):每次取10条,迭代查询user::find()->batch(10):每次取10条where->addwhere()->orwhere

laravel、tp、yii框架的优缺点

laravel:
优点:文档丰富、三方类库、安全机制、中间件和路由过滤、错误机制、支持composer、支持各种设计模式

缺点:基于组件比较臃肿、性能稍低、较复杂不易上手

tp:
优点:轻量级中型框架、易上手、文档丰富、支持composer

缺点:对ajax不优化、目录结构混乱、上手易、深入难

yii:
优点:高性能、适用于大型项目、纯oop、模型使用方便、开发快、运行快、支持composer

缺点:对model层考虑少,文档少,视图中包含php代码

laravel和tp的区别?

框架架构:laravel采用mvc架构,tpc采用mvc+service+repository架构。laravel在代码组织和架构上更规范化,tp更自由

技术特点:laravel使用了一系列先进技术,如:事件,命令行工具,blade模版引擎,orm等,而tp更注重对传统php开发方式的支持,如原生sql和smarty模版引擎

文档和社区:laravel的文档和社区活跃度更高

学习曲线:laravel学习曲线相对陡峭,需要花费更多时间学习,tp更容易上手,适合初学者

使用场景:laravel适合大型、复杂的web应用,如企业级cms,电商网站等;tp适合中小型web应用,如个人博客,小型商城等

tp3.2和tp5的区别:

url和路由的改变:新增(路由分组、闭包定义、路由变量规则、组合变量)

模块和控制器的改变:应用命名空间统一为app而不是模块名,类名不带controller后缀,采用return返回,废除前置和后置方法,url访问自动定位控制器,增加了request和response

数据库改变:查询返回对象,支持链式查询(多个where),支持闭包查询,分块查询,视图查询,增加sql监听事件,废除单字母函数改用db,model

常量和助手函数的改变:废除了一些常量(is_get,is_post等)res

来源地址:https://blog.csdn.net/qq_38989173/article/details/130450480

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

PHP面试宝典之Laravel篇

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python面试宝典之基础篇-04

接着更新Python常见的面试题!
2023-06-01

Python面试宝典之基础篇-02

我觉得你如果正在找工作,我的Python面试宝典几期教程,你一定得花时间看完了!
2023-06-01

Oracle面试宝典-等待事件篇

Oracle面试宝典-等待事件篇请问Oracle数据库中等待事件的作用是什么?一、等待事件由来因为指标体系的发展,才导致等待事件的引入。总结一下,Oracle的指标体系,大致经历了下面三个阶段:(1)以命中率为主要参考指标以各
2022-11-30

Sql面试宝典带答案

一、试用SQL查询语句表达下列对教学数据库中三个基本表 S、SC 、C 的查询:S(sno,sname,SAGE,SSEX) 各字段表示学号,姓名,年龄,性别Sc(sno,cno,grade) 各字段表示学号,课程号,成绩、C(cno,cname, TEACH
Sql面试宝典带答案
2015-01-21

面试宝典_Python.常规算法.000

面试题目:1. 用PYTHON实现一个扁平化的字典,如{'a': {'b': '1'}}扁平化处理后变成{'a.b': 1}?解题思路:1. 由于字典可能是无限嵌套的,所以第一印象就想到采用递归函数完成,由于扁平化数据需要零时存储以及永久存
2023-01-31

面试宝典_Python.运维开发.000

面试题目:1. 用PYTHON实现tail -f功能,默认显示最后15行,实时输出新增行?解题思路:1. 此需求在很多场景中都有遇到,而且在各大群中也被讨论过,虽然有现成的模版如pyinotify等模块实现,但面试更想通过你的解题思路来判断
2023-01-31

战疫期间在家办公宝典之-教育篇

国家教育部日前发布消息称:将通过网络平台全面实现“停课不停学”。而线上课程的开始也开启了各种直播教学,线上作业,线上考勤等各种在线的课程任务,本期办公指南为您揭晓容智iBot如何助力各位教育工作者。大量线上作业批改十分困难?全国各地的学校都
2023-06-06

【2022最新Java面试宝典】—— SpringCloud面试题(49道含答案)

目录 Spring Cloud1. 什么是微服务架构2. 为什么需要学习Spring Cloud3. Spring Cloud 是什么4. SpringCloud的优缺点5. SpringBoot和SpringCloud的区别?6.
2023-08-18

【2022最新Java面试宝典】—— SpringBoot面试题(44道含答案)

目录 1. 什么是 Spring Boot?2. 为什么要用SpringBoot3. SpringBoot与SpringCloud 区别4. Spring Boot 有哪些优点?5. Spring Boot 的核心注解是哪个?它主要
2023-08-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录