1月
01
Laravel 5.4默认使用utf8mb4
字符编码,而不是之前的utf8
编码。因此运行php artisan migrate
会出现如下错误:
[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table users add unique users_email_unique(email))
[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
那么问题根源,以及怎么解决呢。
12月
28
场景
假如我们要使用七牛的 token。
- 直接写死在代码调用的地方。 [x]可维护性低
-
写在 config/app.php
文件中。[x]无法区分环境进行配置
-
存储在 .env
文件中,使用 env()
方法直接读取。 [x]虽然解决了环境问题,但不推荐。
-
存储在 .env
和 config/app.php
文件中,然后使用 config()
函数来读取。 [x] 最佳方案
一种方法是最古老的方法,代码可维护性极低,一旦域名变更就只能全局替换。第二种方法无法区分环境,例如本地使用开发环境域名测试,线上才是正式的 CDN 域名。第三种方法虽然解决了环境变量的问题,并且也具备一定的灵活性,但是不够灵活,假如你的网站流量巨大,需要配置几个 CDN 域名,使其在加载静态资源时随机支配域名,这种做法就无法满足需求了。第四种方法既支持环境变量,又具备极高的灵活性,假如遇到同样的 CDN 多域名随机问题,你只需要写一个辅助方法,然后在 config/app.php
中调用即可,不需要动到任何一行业务逻辑代码。
12月
23
如果想在mac下使用windows,用虚拟机安装windows是一个不错的选择。比装双系统好多了。想用就用,不要就卸,就跟安装软件卸载软件一样方便。虚拟机容器比较多,有vm,pd,vbox。因为之前用vbox安装了homestead,那么就用vbox来装windows。
下载windows镜像
https://msdn.itellyou.cn/ 这里有你想要的windows版本,xp,vista,win7,win10,server等。个人比较中意win7,这里选择win7 64位旗舰版。
12月
10
先安装 virtualbox, 以及 vagrant 。 这两个都是免费软件。默认安装即可。安装 virtualbox 时,记得要运行它的pkg文件。
再来安装 homestead.box。
12月
01
Laravel的auth功能非常好用。只需要按照模板写,几乎不写代码就可以完成注册,登录,忘记密码这一整套流程。但是,仅仅照搬,还是有些不足的。下边列出个人注意的一些知识点,以备以后会用到。
注册
前端表单页面 -> 路由 -> 控制器(RegisterController) + RegistersUsers。
12月
01
什么是
- 什么是 VirtualBox。
-
什么是 Vagrant。
-
什么是 Homestead。
VirtualBox
VirtualBox 是 Oracle 公司的开源虚拟机软件。VirtualBox号称是最强的免费虚拟机软件,它不仅功能齐全,而且性能也很优异!VirtualBox 支持大部分流行的系统,如:Mac, Windows, Linux 等。
11月
22
前言
使用 laravel 框架,总会使用到其模板引擎 blade。 该引擎的最大优点就是继承和切片。
一个网站通常首部(header),底部(footer)都是一样的。如果每个页面,都通过复制粘贴来实现共通性,就会很累赘。
相同代码的复用,在其他框架中也会有。而blade使用的是继承以及include。
11月
21
初入
- Contracts(契约),也就是接口。定义一些方法,所以实现此接口的类都要实现契约里边的方法。
-
ServiceContainer (契约的具体实现) ,实现 Contracts
。具体实现逻辑写在这里。
-
ServiceProvider (服务提供者) ,绑定事务到服务容器。
-
App (服务容器), 在服务提供者中,可以通过 $this->app
或App::
得到。 App::
其实就是门面。
-
Facades(门面), 简化服务提供者的调用方式,用静态的方式调用具体实现里的方法。
具体
通过依赖注入,反射,实现了服务的功能。契约定义好服务所需要的接口,当然也可以不需要这个。当类似抽象功能多的时候,还是实现的好。然后,定义契约的实现。在服务提供者中,将服务绑定到容器。最后,在 config\app.php
中的providers
,加入服务提供者。如果想使用门面,创建一个门面,然后在门面中重写getFacadeAccessor
。最后,也是要在 config\app.php
中的aliases
加入门面。
11月
15
我们除了使用 phpmyadmin
管理mysql数据库,还会用到 navicat
等。但,就是连接不上,提示 Host xxx.xxx.xxx.xxx
is not allowed to connect to this MariaDB server。这个是没有权限啊。
原来,刚装的mysql,由于执行安全初始化脚本(mysql_secure_installation)的时候,禁用root用户远程登录设置为true了。所以,下边有两种方法来解决这个问题。
- 改表法。
-
授权法。
以下操作,在linux下进行。