ThinkPHP框架
TP框架是一共快速兼容简单的轻量级国产PHP开发框架,使用面向对象的结构和MVC模式进行开发。它可以支持Windows、Linux等服务器,并且支持MySql、Sqlite等多种数据库和PDO扩展。其自身包含底层架构、兼容处理、基类库、数据库访问层、模版引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件,并且对于跨版本、跨平台和跨数据库移植都比较方便。适合中小型项目开发。
优势:简单易用(Model,Controller,View负责各自的工作),它拥有支持XML标签库技术的编译型模版引擎,支持两种模版标签,动态编译,缓存技术。还支持自定义标签库,具有独特的数据验证和自动填充,MD5数据加密等功能。部署简单只需要一个入口文件,上手快。
缺点:模版比较固定,导致思想容易固化。
Laravel框架
Laravel是一套简洁,优雅的PHP WEB开发框架。集合了PHP比较新的特性,以及各种的设计模式,是一个适合学习的框架,但要求PHP基础扎实熟练。适合大中型项目的开发。
优势:
- 1、支持Composer
- 2、框架结构比较清晰,注重代码的模块化(抽象了中间件,任务,服务等)和可扩展性,路由系统快速高效
- 3、支持处理跨站请求伪造,在进行form表单post提交时,必须传入{{ csrf_field() }}
- 4、Laravel 的社区很强大,具有丰富的扩展包及工具
- 5、具有缓存、身份验证、任务自动化、hash加密、事务等功能
- 6、独特的 .env环境文件,方便了系统的配置和不同平台的开发
缺点:基于组件式的框架,相对有点臃肿
Yii 框架
Yii Framework是一个基于组件、用于大规模web应用开发的高性能PHP开源框架,是目前最具效率的PHP框架之一。适合大型重量型web应用开发。
优势:
- 1、纯OOP开发,模型使用方便
- 2、支持命令行工具开发,可以快速的创建一个web应用程序的代码
- 3、具有高度的可重用性和可扩展性
- 4、开发速度快,性能优异且功能丰富
- 5、支持composer包管理工具
缺点:model 层考虑较少,文档中中文文档较少。要求php技术精通水平,OOP编程也要很熟练
1. 如何在Laravel中启用查询日志?
使用enableQueryLog方法在Laravel中启用查询日志 - DB::connection()->enableQueryLog(); // 可以使用getQueryLog方法获取已执行查询的数组: $queries = DB::getQueryLog();
2. 使用Laravel框架有哪些优缺点?
使用Laravel框架的优点 Laravel框架具有内置的轻量级刀片模板引擎,可加快编译任务并轻松创建具有动态内容的布局。提高代码可重用性。Eloquent ORM与PHP活动记录实现。内置命令行工具“Artisan”,用于创建代码框架,数据库结构并构建其迁移。 使用laravel框架的缺点 开发过程要求您使用标准,并且应该对编程有真正的了解Laravel是新的框架,与npm(对于node.js),ruby gems和python pip相比,Laravel并不是那么强大
3.Laravel Eloquent中可用的关系类型有哪些?
以下是Laravel Eloquent ORM支持的关系类型。
- 一对一
- 一对多
- 一对多(逆)
- 多对多
- 有多通过(Has Many Through)
- 多态关系
4. Laravel中的依赖注入是什么?
在软件工程中,依赖注入是一种技术,其中一个对象提供另一个对象的依赖关系。 依赖项是可以使用的对象(服务)。 注入是将依赖项传递给将使用它的依赖对象(客户端)。 该服务成为客户所在州的一部分。将服务传递给客户端,而不是允许客户端构建或查找服务,是模式的基本要求。 参考:https://en.wikipedia.org/wiki/Dependency_injection 可以通过Constructor,setter和property injection进行依赖注入
5. Laravel的Traits是什么?
PHP Traits只是一组想要包含在另一个类中的方法。Trait就像抽象类一样,不能自己实例化。通过使开发人员能够在生活在不同类层次结构中的几个独立类中自由地重用方法集,创建了Trait以减少PHP中单一继承的限制。 下面是Traits的一个例子。 trait Sharable { public function share($item) { return 'share this item'; } } 然后,可以将此Trait包含在其他类中
6.laravel restfui api 路由(四种方式)
get
post
put
delete
select查询语句执行顺序
查询中用到的关键词主要包含六个,并且他们的顺序依次为 select--from--where--group by--having--order by
这六个关键词的执行顺序 与sql语句的书写顺序并不是一样的,而是按照下面的顺序来执行
from--where--select--group by--having--order by,
from:需要从哪个数据表检索数据
where:过滤表中数据的条件
group by:如何将上面过滤出的数据分组
having:对上面已经分组的数据进行过滤的条件
order by :按照什么样的顺序来查看返回的数据
laravel查询构造器DB还是ORM,这两者有什么区别
DB主要是一个查询构造器(SQLBuilder),它会帮你把输入的参数转变成SQL语句去数据库里查询,和你自己手动写SQL语句本质上是一样的。
ORM是一个对象关系映射(Object Relational Mapper)工具,它会把数据库中的数据映射成对象和集合对象,你无需接触底层数据,可以直接调用映射出来的对象进行开发。
DB适合用于对性能要求高或者业务逻辑简单的项目,ORM适合业务逻辑比较复杂的项目。
解答一:
我们所有操作都是走的orm,因为操作简单 直观明了 好维护,性能是低一些 但还没有多致命,真有并发需要优化了 用DB也不一定能解决问题。还是要了解orm每个方法的意思,不然你可能一不小心就会多出来很多很多sql,
比如取列表的时候加个with不要仅仅靠关系来获取联表的其他内容。
解答二:
数据查询上面,ORM不会比DB差的,就比如with,是用了sql最基本的拆语句优化。ORM的损耗仅仅是代码层面的,这已经不算是问题了。
ORM适用于一般到中等复杂度的查询,也适用于各种模型操作,比如有一个关系targets,你可以直接用targets()->delete()等等进行关系数据操作。
ORM中的软删除,自动更新时间字段,字段保护,字段类型转换,都会在一些规范而且系统的工程中让你受益。
另外DB的场景:一些比较复杂的查询语句,事务操作,等都需要DB来完成。