下面列出了最常见的Laravel面试问题和答案。
1)什么是Laravel?
Laravel是免费使用的基于PHP的开源Web框架。它是由Taylor Otwell开发的。它支持MVC(模型-视图-控制器)架构模式。 Laravel提供了富有表现力的优雅语法, 这对于轻松, 快速地创建出色的Web应用程序很有用。 Laravel的第一版于2011年6月9日发布。
在2015年3月的srcmini调查中, Laravel与Symfony, Nette, CodeIgniter和Yii2一起被选为最受欢迎的PHP框架之一。
2)Laravel的主要特点是什么?
Laravel的一些主要功能是:
- 口才ORM
- 查询生成器
- 反向路由
- 宁静的控制器
- 移居
- 数据库播种
- 单元测试
- 家园
3)你对雄辩的ORM有什么了解?
雄辩的ORM(对象关系映射)是Laravel框架的主要功能之一。它可以定义为活动记录模式的高级PHP实现。
活动记录模式是一种可在软件中找到的体系结构模式。它负责将内存对象数据保存在关系数据库中
在对数据库对象之间的关系实施约束时, 雄辩的ORM还负责同时提供内部方法。雄辩的ORM按照活动记录模式将数据库表表示为类, 其对象实例绑定到单个表行。
4)Laravel中的查询生成器是什么?
Laravel的Query Builder提供了对Eloquent ORM的更直接的数据库访问。它不需要直接编写SQL查询。相反, 它提供了一组能够以编程方式构建查询的类和方法。它还允许对执行的查询结果进行特定的缓存。
5)写下Laravel查询构建器提供的一些聚合方法的名称。
查询生成器提供的一些方法是:
- 计数()
- max()
- 分钟()
- avg()
- 和()
6)什么是路由?
所有Laravel路由都在路由文件中定义, 这些文件存储在routes目录中。这些文件由MVC框架加载。 route / web.php文件定义可用于Web界面的路由。这些路由被分配为Web中间件组, 该组提供了会话状态和CSRF保护等功能。 route / api.php中可用的路由是无状态的, 并分配为API中间件组。对于大多数应用程序, 应该首先在route / web.php文件中定义路由。
7)你对反向路由了解什么?
Laravel中的反向路由用于根据名称或符号生成URL。它定义了链接和Laravel路由之间的关系, 并且有可能在以后对路由进行更改以自动传播到相关链接中。当使用现有路由的名称生成链接时, Laravel会自动生成适当的统一资源标识符(URI)。反向路由为应用程序提供了灵活性, 并帮助开发人员编写更简洁的代码。
路线声明:
Route::get('login', 'users@login');
可以使用反向路由为其创建链接, 该链接可以在我们定义的任何参数中进一步传输。如果未提供可选参数, 则会将其从生成的链接中自动删除。
{{ HTML::link_to_action('users@login') }}
通过使用它, 将自动创建诸如https://abc.go.com/login的URL。
8)你将如何描述Laravel中的捆绑包?
在Laravel中, 捆绑包也称为包。软件包是向Laravel添加更多功能的主要方式。包可以是任何东西, 从使用Carbon等日期的好方法, 到像Behat这样的整个BDD测试框架。 Laravel还支持创建自定义软件包。
有不同类型的软件包。其中一些是独立软件包。这意味着他们可以使用任何PHP框架。 Carbon和Behat等框架是独立软件包的示例。其他软件包也打算与Laravel一起使用。这些软件包可能包含主要用于增强Laravel应用程序的路由, 控制器, 视图和配置。
9)什么是作曲家?如何由作曲家安装Laravel?
编写器是PHP中的依赖项管理器。它管理项目所需的依赖关系。这意味着作曲家将在一个地方提取所有必要的库, 依赖项并进行全部管理。
Laravel安装步骤:
- 如果系统上没有作曲家, 请从https://getcomposer.org/download/下载作曲家
- 打开命令提示符
- 转到htdocs文件夹
- 在C:\ xampp \ htdocs>下运行以下命令
10)Laravel是否支持缓存?
是的, Laravel为流行的缓存后端(如Memcached和Redis)提供了支持。
默认情况下, Laravel配置为使用文件缓存驱动程序, 该驱动程序用于在文件系统中存储序列化或缓存的对象。对于大型项目, 建议使用Memcached或Redis。
11)如何清除Laravel中的缓存?
下面给出了清除Laravel中的缓存的语法:
- PHP工匠缓存:清除
- PHP的工匠配置:清除
- PHP工匠缓存:清除
12)你将如何解释Laravel中的中间件?
顾名思义, 中间件充当请求和响应之间的中间人。中间件是HTTP请求过滤机制的一种形式。例如, Laravel由中间件组成, 该中间件验证应用程序的用户是否已通过身份验证。如果用户已通过身份验证并尝试访问仪表板, 则中间件会将其重定向到主页;否则, 用户将被重定向到登录页面。
Laravel提供了两种类型的中间件:
全球中间件
它将在应用程序的每个HTTP请求上运行。
路由中间件
它将被分配到特定的路线。
语法
php artisan make:middlewareMiddelwareName
例子
php artisan make:middlewareUserMiddleware
现在, 将在app / Http / Middleware中创建UserMiddleware.php文件。
13)你对Laravel中的数据库迁移有什么了解?我们如何使用它?
迁移可以定义为数据库的版本控制, 这使我们能够轻松地修改和共享应用程序的数据库架构。迁移通常与Laravel的架构生成器搭配使用, 以轻松构建应用程序的数据库架构。
迁移文件包括两个方法, up()和down()。方法up()用于添加新的表, 列或索引数据库, 而down()方法用于反转up()方法执行的操作。
我们可以使用make:migration生成一个迁移及其文件。
语法
php artisan make:migration blog
通过使用它, 将在数据库/迁移中创建当前日期的blog.php文件。
14)你对Laravel中的服务提供商了解多少?
可以将服务提供商定义为配置所有整个Laravel应用程序的中心位置。应用程序以及Laravel的核心服务通过服务提供商进行引导。这些是用于维护类依赖关系和执行依赖关系注入的强大工具。服务提供商还指示Laravel将各种组件绑定到Laravel的服务容器中。
此处给出了一个artisan命令, 可用于生成服务提供者:
php artisan make: provider ClientsServiceProvider
几乎所有服务提供商都扩展了Illuminate \ Support \ ServiceProvider类。大多数服务提供商的文件中都包含以下功能:
- Register()函数
- Boot()函数
在Register()方法中, 只能将内容绑定到服务容器中。永远不要尝试在Register()方法中注册任何事件侦听器, 路由或任何其他功能。
15)我们如何使用Laravel中的Query获取两个日期之间的数据?
我们可以使用whereBetween()方法通过Query检索两个日期之间的数据。
例子
Blog::whereBetween('created_at', [$date1, $date2])->get();
16)你对Laravel中的CSRF令牌了解多少?有人如何关闭特定路由的CSRF保护?
CSRF保护代表”跨站点请求伪造”保护。 CSRF会检测到未经授权的用户对Web应用程序的未经授权的攻击。内置的CSRF插件用于创建CSRF令牌, 以便它可以验证活动的经过身份验证的用户发送的所有操作和请求。
要关闭特定路由的CSRF保护, 我们可以在$ appapp \ Http \ Middleware \ VerifyCsrfToken.php文件中存在的$ except变量中添加该特定URL或Route。
例子
classVerifyCsrfToken extends BaseVerifier
{
protected $except = [
'Pass here your URL', ];
}
17)列出Laravel提供的一些官方软件包吗?
Laravel提供了一些官方软件包, 如下所示:
出纳员
Laravel收银员为Stripe和Braintree的订阅计费服务实现了一个表达流畅的界面。它控制着你正在恐惧编写的几乎所有样板订阅帐单代码。此外, 出纳员还可以控制优惠券, 订购数量, 交换订购, 取消宽限期, 甚至生成发票PDF。
使者
Laravel Envoy负责提供一种干净的最小语法, 用于定义我们在远程服务器上运行的常见任务。使用Blade样式的语法, 可以快速安排部署任务, Artisan命令等。 Envoy仅提供对Mac和Linux的支持。
护照
Laravel用于创建API身份验证, 以在Laravel护照的帮助下轻松实现。它可以在几分钟内为Laravel应用程序提供完整的Oauth2服务器实现。护照通常在由Alex Bilbie维护的League OAuth2服务器之上组装。
侦察
Laravel Scout用于提供一种简单的, 基于驱动程序的解决方案, 用于向雄辩的模型添加全文搜索。通过使用模型观察器, Scout可以自动使搜索索引与雄辩的记录保持同步。
社交名流
Laravel Socialite用于为Facebook, Twitter, Google和Linkedln等提供OAuth认证的表达, 流畅的界面。它控制着你正在编写的几乎所有样板社会认证代码。
18)你对单元测试了解什么?
单元测试是Laravel的组成部分提供的内置测试。它由检测和防止框架回归的单元测试组成。可以通过可用的artisan命令行实用工具运行单元测试。
19)你对Laravel的立面了解多少?说明。
Laravel Facades提供了类似静态的接口类, 可在应用程序的服务容器中使用。 Laravel带有多种外墙的自助船可以使用Laravel的几乎所有功能。外墙还有助于直接从容器本身访问服务。它在Illuminate \ Support \ Facades命名空间中进行了描述。因此, 它易于使用。
例子
use Illuminate\Support\Facades\Cache;
Route::get('/cache', function () {
return Cache::get('PutkeyNameHere');
})
20)我们如何检查Laravel当前版本?
使用artisan命令的-version选项, 可以轻松检查Laravel安装的当前版本。
Php artisan -version
21)你将如何解释Laravel中的dd()函数?
dd代表” Dump and Die”。 Laravel的dd()函数可以定义为辅助函数, 该函数用于将变量的内容转储到浏览器并阻止进一步的脚本执行。
例子
dd($array);
22)你对PHP工匠了解多少?提到一些工匠命令。
PHP artisan是Laravel提供的命令行界面/工具。它由几个有用的命令组成, 这些命令在构建应用程序时可能会有所帮助。下面给出了一些手工艺命令:
PHP工匠名单
“列表”命令用于查看所有可用Artisan命令的列表。
PHP工匠帮助
每个命令还包含一个”帮助”屏幕, 用于显示和描述命令的可用参数和选项。要显示帮助屏幕, 请运行”帮助”命令。
PHP工匠修补匠
Laravel的手工艺匠是repl(读-评估-打印循环)。使用修补程序, 可以通过命令行编写实际的PHP代码。甚至可以更新或删除数据库中的表记录。
PHP artisan-版本
通过使用此命令, 可以查看Laravel安装的当前版本。
PHP工匠制作模型model_name
该命令在” app”目录下创建一个模型” model_name.php”。
PHP工匠制作控制器controller_name
此命令用于在app / Http / Controllers文件夹中构建新的控制器文件。
23)你将如何解释Laravel中的事件?
事件是程序识别并处理的活动或事件。 Laravel中的事件提供了简单的观察者实现, 使我们能够在应用程序中订阅和侦听事件。事件类存储在app / Events中, 而其侦听器存储在我们应用程序的app / Listener中。这些可以使用Artisan控制台命令生成。单个事件可能包含多个彼此不依赖的侦听器。
Laravel中有一些事件示例, 它们是:
- 注册了新用户。
- 发表新评论。
- 用户登录/注销。
- 添加了新产品。
24)Laravel中的验证是什么?
验证是Laravel用于验证应用程序中的传入数据的方法。
它们是在将数据输入数据库之前确保其为干净且预期格式的便捷方法。 Laravel包含几种不同的方法来验证应用程序的传入数据。默认情况下, Laravel的基本控制器类使用ValidatesRequests特性在功能强大的验证规则的帮助下验证所有传入的HTTP请求。
25)你对Lumen了解什么?
Lumen是一个基于Laravel顶级组件的PHP微框架。它由泰勒·奥特威尔(Taylor Otwell)(Laravel的创建者)创建。它是为构建基于Laravel的微服务和快速开发API而创建的。它是现有最快的微框架之一。 Lumen不是像Laravel这样的完整Web框架, 仅用于创建API。因此, 大多数组件(例如HTTP会话, cookie和模板)都从Lumen中排除。 Lumen为诸如日志记录, 路由, 缓存队列, 验证, 错误处理, 中间件, 依赖注入, 控制器, 刀片模板, 命令调度程序, 数据库抽象, 服务容器和Eloquent ORM等功能提供支持。
通过运行以下命令, 可以使用composer安装Lumen:
composer create-project --prefer-distlaravel/lumen blog
26)Laravel使用哪个模板引擎?
刀片是Laravel提供的简单但功能强大的模板引擎。在视图中使用PHP代码没有限制。所有刀片视图都被编译成简单的PHP代码并被缓存, 直到对其进行修改。 Blade有效地为我们的应用程序增加了零开销。 Laravel中的刀片视图文件使用.blade.phpfile扩展名, 并保存在resources / views目录中。
27)解释服务容器及其优势。
Laravel中的服务容器是最强大的功能之一。它是解决类依赖关系并在Laravel中执行依赖关系注入的重要而强大的工具。也称为IoC容器。
依赖项注入是一个术语, 从本质上讲是指构造函数或在某些情况下通过” setter”方法将类依赖关系”注入”到类中。
服务容器的优势
- 它可以处理有关对象创建的类依赖性。
- 它可以将接口组合到具体的类。
28)你对Laravel合同了解多少?
Laravel的合同是一组接口, 负责定义Laravel框架提供的服务的核心功能。
29)你将如何解释Laravel的宅基地?
Homestead是一个官方的, 预包装的, 无所事事的虚拟机, 它为Laravel开发人员提供了开箱即用地开发Laravel的所有必要工具。它还包括Ubuntu, Gulp, Bower和其他开发工具, 这些工具可用于开发全面的Web应用程序。它提供了一个开发环境, 无需在机器上安装PHP, Web服务器或任何其他服务器软件即可使用。
30)Laravel和Codeigniter有什么区别?
Laravel | Codeigniter |
---|---|
Codeigniter是基于PHP的功能强大的框架。 | |
Codeigniter是一个更旧, 更成熟的框架。 | |
与Laravel相比, Codeigniter较少面向对象。 | |
Codeigniter可以生成活动记录, 模型视图控制器和HMVC设计模式。 | |
Codeigniter不支持ORM | |
Codeigniter需要256 GB内存。 | |
Codeigniter没有内置的用户身份验证支持。 |
31)我们如何在Laravel中获取用户的IP地址?
我们可以使用以下方式获取用户的IP地址:
public function getUserIp(Request $request){
// Gettingip address of remote user
return $user_ip_address=$request->ip();
}
32)我们如何在Laravel中使用自定义表?
通过覆盖Eloquent的受保护$ table属性, 我们可以轻松地在Laravel中使用自定义表。这里是示例:
class User extends Eloquent{
protected $table="my_user_table";
}
33)Laravel中Eloquent cursor()方法的用途是什么?
cursor方法允许我们使用游标遍历数据库, 该游标将仅执行单个查询。在处理大量数据时, 可以使用游标方法来大大减少内存使用量。
例子
foreach (Product::where('name', 'bar')->cursor() as $flight) {
//make some stuff
}
34)你将如何在Laravel中创建一个帮助文件?
我们可以按照以下步骤使用composer创建一个帮助文件:
在app文件夹中创建一个文件” app / helpers.php”。
加
"files": [
"app/helpers.php"
]
在”自动加载”变量中。
现在使用composer dump-autoload或composer update更新composer.json。
35)Laravel 5.8的要求是什么?
- PHP版本> = 7.1.3
- OpenSSL PHP扩展
- PDO PHP扩展
- Mbstring PHP扩展
- Tokenizer PHP扩展
- XML PHP扩展
- Ctype PHP扩展
- JSON PHP扩展
36)Laravel中保留了哪些目录控制器?
控制器保存在app / http / Controllers目录中。
37)PHP的紧凑功能有什么用?
PHP紧凑函数接收每个键, 然后尝试搜索具有相同名称的变量。如果找到一个变量, 那么它将构建一个关联数组。
38)Laravel 4和Laravel 5.x之间的主要区别是什么?
Laravel 4和Laravel 5.x之间的主要区别如下:
- 旧的app / models目录已完全删除。
- 控制器, 中间件和请求(Laravel 5.0中的新类)现在合并在app / Http目录下。
- 一个新的app / Providers目录更改了Laravel 4.x以前版本中的app / start文件。
- 应用程序语言文件和视图将移动到资源目录。
- Laravel的所有主要组件都包含位于照明/合同存储库中的界面。
- Laravel 5.x现在支持HTTP中间件。包含的身份验证和CSRF”过滤器”将转换为中间件。
- 现在可以键入对控制器方法的依赖项。
- 用户身份验证, 注册和密码重置控制器现在可以立即使用, 包括位于资源/视图/身份验证中的简单相关视图。
- 现在可以将事件定义为对象, 而不仅仅是使用字符串。
- 除了Laravel 4支持的队列作业格式外, Laravel 5还允许我们将排队的作业表示为简单的命令对象。这些命令可在app / Commands显示屏中找到。
39)解释Laravel与其他PHP框架相比的一些好处。
Laravel与其他PHP框架相比几乎没有什么好处:
- 与其他版本相比, 在Laravel中, 设置和自定义过程既快速又容易。
- Laravel支持多个文件系统。
- 它已预先加载了Laravel Socialite, Laravel Cashier, Laravel Passport, Laravel Elixir和Laravel Scout等软件包。
- 它由内置的身份验证系统组成。
- 它支持带有PHP活动记录实现的Eloquent ORM(对象关系映射)。
- ” Artisan”命令行工具, 用于创建数据库结构, 代码框架并构建其迁移。
40)Laravel Eloquent提供哪些类型的关系?
以下是Laravel Eloquent ORM支持的关系类型:
- 一对一
- 一对多
- 一对多(逆向)
- 多对多
- 有很多通过
- 多态关系
- 多对多态关系
41)你对ORM了解什么?
ORM代表对象关系映射。它是一种编程技术, 用于在面向对象的编程语言中的不兼容类型系统之间转换数据。
42)我们如何在Laravel中实现一个包?
我们可以通过以下方式在Laravel中实现一个包:
- 创建一个包文件夹并命名。
- 为软件包创建Composer.json文件。
- 通过主要的composer.json和PSR-4加载程序包。
- 创建服务提供商。
- 为程序包创建一个控制器。
- 创建一个Routes.php文件。
43)你对Laravel的性状了解多少?
PHP特性是一组可以包含在另一个类中的方法。特性不能像抽象类一样被自身实例化。生成特性以减少PHP中单一继承的限制。它允许开发人员在生活在不同类层次结构中的各个独立类中自由地重用方法集。
例子
trait Sharable {
public function share($item)
{
return 'share this item';
}
}
然后, 我们可以将此特性包括在其他类中, 例如:
class Post {
use Sharable;
}
class Comment {
use Sharable;
}
现在, 如果我们想从这些类中创建新的对象, 我们会发现它们都有可用的share()方法:
$post = new Post;
echo $post->share(''); // 'share this item'
$comment = new Comment;
echo $comment->share(''); // 'share this item'
44)有人如何更改Laravel中的默认数据库类型?
Laravel默认配置为使用MySQL。
要更改其默认数据库类型, 请编辑文件config / database.php:
- 搜索’default’=> env(‘DB_CONNECTION’, ‘mysql’)
- 将其更改为” default” => env(‘DB_CONNECTION’, ‘sqlite’)所需的任何内容
通过使用它, MySQL更改为SQLite。
45)我们如何在Laravel 5中使用维护模式?
当应用程序处于维护模式时, 将为进入该应用程序的所有请求显示自定义视图。它使在更新或执行维护时轻松”禁用”应用程序变得容易。在我们的应用程序的默认中间件堆栈中添加了维护模式检查。当应用程序处于维护模式时, 将抛出StatusMode 503的MaintenanceModeException。
我们只需执行以下命令, 即可在Laravel 5中启用或禁用维护模式:
// Enable maintenance mode
php artisan down
// Disable maintenance mode
php artisan up
46)我们如何使用雄辩的话在Laravel中创建记录?
如果我们想使用Laravel雄辩地在数据库中创建新记录, 则需要创建一个新的模型实例。然后, 我们需要在模型上设置属性并调用save()方法。
例子
public functionsaveProduct(Request $request )
$product = new product;
$product->name = $request->name;
$product->description = $request->name;
$product->save();
47)我们如何查看Laravel中已登录的用户信息?
User()函数用于获取登录用户
例子
if(Auth::check()){
$loggedIn_user=Auth::User();
dd($loggedIn_user);
}
48)你将如何在Laravel模型中描述Fillable Attribute?
在雄辩的ORM中, $ fillable属性是一个数组, 其中包含可以使用mass-assignment填充的所有表字段。
批量分配是指将数组发送到模型以在数据库中直接创建新记录。
代码源
class User extends Model {
protected $fillable = ['name', 'email', 'mobile'];
// All fields inside $fillable array can be mass-assigned
}
49)你将如何在Laravel模型中解释保护属性?
保护属性与可填充属性相反。
在Laravel中, 可填充属性用于指定要大量分配的那些字段。受保护的属性用于指定不可大量分配的那些字段。
代码源
class User extends Model {
protected $guarded = ['role'];
// All fields inside the $guarded array are not mass-assignable
}
如果要阻止所有字段被批量分配, 则可以使用:
protected $guarded = ['*'];
$ fillable充当”白名单”, 而$ guarded功能充当”黑名单”。一个人应该使用$ fillable或$ guarded。
50)你对Laravel中的闭包了解多少?
在Laravel中, Closure是一种匿名方法, 可以用作回调函数。它也可以用作函数中的参数。可以将参数传递给Closure。可以通过更改handle()方法中的Closure函数调用来为其提供参数来完成此操作。闭包可以访问变量范围之外的变量。
例子
function handle(Closure $closure) {
$closure();
}
handle(function(){
echo 'Interview Question';
});
首先将一个Closure参数添加到handle()方法开始。我们可以调用handle()方法并将服务作为参数传递。
通过使用$ closure();在handle()方法中, 我们告诉Laravel执行给定的Closure, 然后显示”面试问题”。
工作/人力资源面试问题 |
jQuery面试问题 |
Java OOP面试问题 |
JSP面试问题 |
休眠面试问题 |
SQL面试题 |
Android面试题 |
MySQL面试问题 |
Laravel是一个具有表达力, 优雅语法的框架。
Laravel是为最新版本的PHP构建的。
与Codeigniter相比, Laravel更面向对象。
Laravel可以产生模型视图控制器, 活动记录, 观察者, 依赖项注入, 单例, 安逸, 外观, 事件驱动, MTV和HMVC设计模式。
Laravel支持ORM。
Laravel需要1 GB内存。
Laravel具有内置的用户身份验证支持。
面试技巧
JavaScript面试问题
Java基础面试问题
Servlet面试问题
春季面试问题
PL / SQL面试问题
Oracle面试问题
SQL Server面试问题
评论前必须登录!
注册