![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
框架
写PHP的老王
七年老码农,记录自己开发走过的坑,欢迎关注【写PHP的老王】公众号
展开
-
读Yii2框架的web返回格式化类Response
一个完整的网络请求,最后都需要一个符合协议的返回。Yii2在处理web请求之后,统一通过web/Response处理返回。错误也会经过错误处理返回一个Response。一个Response完整的流程有哪些?创建Response对象,设置Resonse响应格式json,html,xml等触发前置事件,暴露操给开发者在输出前对数据进行调整等数据格式化。将所有response的内容更加输出格式...转载 2019-01-27 16:42:37 · 1069 阅读 · 0 评论 -
Laravel5.6 文件上传以及文件管理后台
今天聊聊在Laravel5.6 如何实现文件上传功能,以及上传文件的管理功能。主要有文件列表,上传新文件,创建文件夹,删除文件夹以及删除文件。首先添加一个控制器,在命令行中输入php php artisan make:controller Admin/FileController,创建一个空的FileController控制器,控制器中有下列四个方法:index 显示文件和目录列表uplo...原创 2019-02-20 10:11:12 · 1515 阅读 · 0 评论 -
Yii2,thinkphp5,query类
考虑一个场景,一个函数需对相同表进行多次查询,多次查询中有部分查询条件相同。对于这种情况,Yii2和thinkphp5的实现方式要格外小心。在Yii2中,可以直接使用clone 复用共同的查询条件,但是thinkphp5的话,必须把相同条件再重复写一次。例如,需要查询总有效文章数,以及今日发布有效文章数。Yii2 版本$query = Post::find();$query->wh...原创 2019-03-04 17:39:20 · 617 阅读 · 0 评论 -
Laravel 如何完成beforeResponse功能?
背景一般的项目需求都会要求统一的输出结构,特别是对于api应用而言。因此,如果有beforeResponse的功能,则可以在数据输出之前对response进行统一格式化处理。假设这么一种场景,应用做api开发,使用抛异常的方式(自定义异常类ApiException)返回无效非法请求的情况。正常请求则返回合法数据(数组或可序列化的模型),希望返回的数据格式正常请求返回数据格式:{ "c...原创 2019-08-02 22:15:03 · 872 阅读 · 0 评论 -
你知道Laravel中Facade为什么这样实现?
Route::get('/', function () { return view('welcome');});在laravel中的路由文件routes/web.php有这么一段代码,用于配置路由。这里Route就是用Facade实现类方法get的静态调用。Laravel中的Facade解决类什么问题?在php中,很多情况都需要使用一个容器获取到所有的对象,然后再调用改对象的...原创 2019-08-04 20:24:04 · 286 阅读 · 0 评论 -
如何把 Laravel 默认邮箱登录改成用户名登录
Laravel中默认的登录是通过邮箱和密码进行登录的。那么,怎么样才能用最少的改动将它改成用密码登录呢?默认的,Laravel使用的是Illuminate\Foundation\Auth\AuthenticatesUsers这个trait完成登录功能的。通过观察AuthenticatesUsers的代码,发现下面一段很有意思的代码: protected function validate...转载 2019-08-11 18:00:44 · 868 阅读 · 0 评论 -
Laravel5.8入门系列一 搭建环境,Hello World!
一、环境要求Laravel 5.8对于PHP环境要求如下:PHP >= 7.1.3OpenSSL PHP 扩展PDO PHP 扩展Mbstring PHP 扩展Tokenizer PHP 扩展XML PHP 扩展Ctype PHP 扩展JSON PHP 扩展二、工具PHP环境,使用xampp集成环境,注意下载PHP7.1.3以上版本代码ide,sublime t...原创 2019-09-06 17:15:31 · 704 阅读 · 0 评论 -
Laravel5.8入门系列二,快速实现用户注册登录功能
一 XAMPP 环境配置这次我们需要开始使用继承开发环境了,因为我们需要使用数据库,完成用户的登录注册功能。首先要配置好XAMPP环境,我们需要添加一个vhost,指向blog5.8的public目录。配置8000端口打开XAMPP的配置目录xampp/apache/conf,编辑http.conf文件,搜索Listen 80,然后在下面再添加一个端口监听Listen 8000。修改后...原创 2019-09-07 23:16:34 · 2155 阅读 · 0 评论 -
Laravel5.8入门系列三,添加注册邮箱验证
为了密码垃圾用户,一般在用户注册的时候都会对用户进行验证。这里我们在注册的时候填写了用户的邮箱,但在注册过程中并没有对用户邮箱的真实性进行验证,因此需要添加一个邮件验证机制。整体思路是用户注册的时候,向用户的邮箱发送一个带有特殊验证串的链接,用户点击链接之后,用户验证通过,然后就可以正常登录的,否则用户登录的时候提示用户需要邮件进行激活。修改用户数据表为了实现上面的功能,需要在用户表中添加两...原创 2019-09-08 22:00:35 · 1222 阅读 · 0 评论 -
Yii2 源码学习--yii\base\Objec
在Yii2中,所有的类的都集成于基类Object。Object对象通过几个php的魔术方法,实现属性获取,设置,属性是否存在,属性是否可设置的方法。1.构造函数 public function __construct($config = []) { if (!empty($config)) { Yii::configure($this, ...原创 2019-02-13 14:10:35 · 192 阅读 · 0 评论 -
Laravel5.6 博客搭建系列四--文章标签后台管理
创建标签模型和迁移首先需要创建 Tag 模型类:php artisan make:model --migration Tag该命令会在 app 目录下创建模型文件 Tag.php,由于我们在 make:model 命令中使用了 --migration 选项,所以同时会创建 Tag 模型对应的数据表迁移。在标签(Tag)和文章(Post)之间存在多对多的关联关系,因此还要按照下面的命令创建存放文...原创 2019-02-12 11:20:38 · 692 阅读 · 0 评论 -
从YII2 和ThinkPHP5 中看PHP如何获取所有请求头
开发当中,很多信息除了通过参数传递之外,还会有一些数据通过请求头来传递。分析Yii2和ThinkPHP5 框架代码,看如何用PHP语言获取请求头。Yii2 获取所有请求头 public function getHeaders() { $headers = []; if (function_exists('getallheaders')) { ...原创 2019-01-27 17:03:40 · 1663 阅读 · 0 评论 -
Yii2 主题记录
Yii2本身支持多模块,多主题开发。因此对开发中遇到的多主题问题,以及自定义不同模块主题需要的注意事项进行记录主题添加默认全局主题在配置文件中添加comment配置 'view' => [ 'theme' => [ 'basePath' => '@app/themes/{themesName}', ...原创 2019-01-28 14:12:18 · 177 阅读 · 0 评论 -
Yii 作为模块被调用
Yii以及其他PHP框架,通常是通过一个入口文件把框架类库,引入进来。然后根据route找到指定的控制器执行业务逻辑。一般的框架都可以很容易的集成第三方类库。可是,如果说,多个项目之间需要相互调用,而且多个项目之间不是用相同的框架写的,但是是同一个语言。如果不是相同语言,就只好是各个框架之间开放不同的接口,通过rest或者soap的形式进行接口调用。虽然把各个模块封装成接口,可以很大的降低...原创 2019-01-28 14:14:03 · 356 阅读 · 0 评论 -
PHP 依赖注入,注入容器和服务定位器
考虑一个问题,如果一个web应用需要一个日志服务,日志服务可以是文本,数据库或者邮件的形式,而且日志需要将获取的信息格式化指定的形式。应用可以根据需要,任意切换日志服务是文本还是数据库还是邮件。如果以传统的方式,日志记录的代码类似下面的形式: class Logger{ public function formatLog($log) { ...原创 2019-01-28 14:16:29 · 1216 阅读 · 0 评论 -
Yii2 源码学习 Event
虽然PHP语言本身不能实现异步事件,但是并不代表事件在PHP中不是一个非常有效的代码注入方式。TinkSNS中就有钩子,允许用户在不修改主体业务代码的时候执行不同的操作。钩子对于一些活动,比如充值送积分,充值打折扣。不同的活动,不一样,如果每次都要修改充值业务的主体代码,不仅麻烦,而且容易产生bug。因此可以在充值成功之后触发充值成功的事件,在事件处理中去处理相应的返现,优惠打折操作。...原创 2019-02-16 18:23:32 · 266 阅读 · 0 评论 -
Laravel5.6 博客搭建系列一
Laravel框架目前已经发展到5.6版本了,但是目前官方的入门教程还是基于5.1的博客教程。为了更多的人能快速上手新版本,本教程使用Laravel5.6一部一部跟大家分享如何搭建一个博客系统。下面来看一下如何用十分钟使用Laravel5.6搭建简单博客安装环境Laravel 框架对PHP版本和扩展有一定要求PHP >= 7.1.3PHP OpenSSL 扩展PHP PDO 扩...原创 2019-02-12 11:14:26 · 1530 阅读 · 1 评论 -
Laravel5.6 博客搭建系列二--搭建后台管理系统
创建用户认证系统本篇文章跟大家分享搭建后台管理认证系统以及创建后台视图模板Laravel 中实现登录认证非常简单。实际上,几乎所有东西 Laravel 都已经为你配置好了。配置文件位于 config/auth.php,其中包含了用于调整认证服务行为的、文档友好的选项配置。执行php artisan make:auth和 php artisan migrate创建控制器以及需要的数据表。脚本会...原创 2019-02-12 11:15:59 · 864 阅读 · 0 评论 -
Laravel5.6 博客搭建系列三--博客内容增删改查
本篇内容分享创建后台博客内容增删改查操作。创建markdown转html Service要想实现markdown 到html的转换,需要安装两个依赖库:composer require michelf/php-markdowncomposer require michelf/php-smartypants在app下创建Services目录,存放相应的服务类文件。在app/Service...原创 2019-02-12 11:19:33 · 558 阅读 · 0 评论 -
老王,你给我说说 Laravel 的请求是怎么到达控制器的
老王啊,你总在说Laravel的东西,能不能给我大概简单的说一下一个请求是怎么样到达我写在控制的代码中去的。中间都经历了哪些东西啊。入口Laravel5.8 入口文件为public/index.php$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);$response = $kernel->hand...转载 2019-09-18 09:02:02 · 473 阅读 · 1 评论