ThinkPHP

ThinkPHP开发必备composer扩展包

≡放荡痞女 提交于 2020-01-07 06:39:25
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 本文假设读者有能力正常使用composer 环境隔离 dotenv 真实世界的开发往往是这样, 多个团队成员共同开发, 线上线下的代码通过版本控制系统保持一致. 但你无法保证也没理由要求所有机器上的应用配置一致. 例如,要求所有成员使用相同的本地数据库用户名和密码是不合理的. 线上线下使用相同的数据库配置更加不合理. 我们有很多种方式避免这种问题, 一种常见的方法是, 将配置文件重命名为config.example.php, 然后在每个部署的环境再重命名为config.php,并在分发时排除这个文件. 这种方法很容易实现,但缺点是他是静态的. 每当你增加了一项配置, 或者减少了一项配置, 都需要告诉别人手动处理config.php. 否则, 它的程序可能无法正常运行. 通过专门的环境配置区分不同的部署环境,是另一种被广泛采用的方案. 它的原理很简单: 不同的部署环境中, 需要区别的配置往往非常有限, 所有将config.php纳入版本控制或者分发包中更合理. 这样config.php有变化时,其他环境中的应用可以第一时间更新. 那有限的几个有环境有关配置, 往往都是诸如数据库配置这种必不可少的. 将它们单独隔离出来更加合理. 通常, 实施这种方案会把 隔离的配置放在一个名为 .env 的文件中. 因此这种方案,

thinkphp6 模型 多对多关联

丶灬走出姿态 提交于 2020-01-07 00:14:04
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> belongsToMany(关联表模型,中间表模型,中间表对应关联表的外键,中间表对应当前模型的主键) public function likesInfo() { return $this->belongsToMany(User::class, LikesRecords::class, 'user_id', 'collect_id'); } 来源: oschina 链接: https://my.oschina.net/u/3756690/blog/3154158

php面向对象之链式操作

ぐ巨炮叔叔 提交于 2020-01-06 21:02:01
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在一些框架中,比如说thinkphp中,会经常使用 <?php class index extends Controller{ public function index(){ $result = Db::table('think_user')->where('id',1)->find(); } } ?> 其中: //这就是一种链式操作 Db::table('think_user')->where('id',1)->find(); 像这种操作如何实现,原理就是在类中的方法中最后要有: return $this; 例子: <?php class StringHelper { private $value; public function __construct($value){ $this->value = $value; } function getValue($value){ $this->value = substr($value,0,2); //返回$this return $this; } function getStrlen() { //这里是需要执行的结果,不需要返回$this, //如果不是需要执行的解决过,而且还要继续进行链式操作,则需要:return $this; return $this-

thinkphp6入门绕坑

天涯浪子 提交于 2019-12-28 10:18:55
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1、坑:中间件获取不到控制器和动作。解决:在路由配置中注册中间件便可以获取到。 2、坑:自带验证码输入参数错误。解决:新的自带验证码只能输入配置名称参数,所以可以用动态添加配置的办法,代码如下: Config::set(['VeryCode' => [ // 验证码字体大小 'fontSize' => 32, 'useNoise' => true,//杂点 'useCurve' => false, //混淆曲线 // 验证码位数 'length' => 4, 'imageH' => '', 'imageW' => '', ]], 'config'); //$captcha = new Captcha($config); return Captcha::create('VeryCode'); 持续更新中 来源: oschina 链接: https://my.oschina.net/u/3782143/blog/3148914

thinkphp5结合centos安装phpredis扩展

喜欢而已 提交于 2019-12-25 14:54:26
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 坑! 首先说一下,安装这个需要一些前置条件, 如果不安装php-devel就不会有phpize和php-config,接下去的步骤也就没办法进行了,或者你有别的的办法也行 phpredis 下载地址为: https://github.com/phpredis/phpredis/releases 安装可以用 yum list |grep php-devel* 查看相关版本 并安装, 接下来安装phpredis wget https://github.com/phpredis/phpredis/archive/5.5.1.tar.gz(这里的版本是我的,请自行选择版本) cd phpredis-5.5.1 # 进入 phpredis 目录 /usr/bin/phpize # (不知道位置的可以whereis phpize 查看位置) 如果出现上面的步骤,多半是php-devel包和你自己的php版本不符合,需要重新安装php-devel, 运行: yum install php-devel, 如果出现上面的错误提示,建议检查当前linux的php版本, 我这里是7.2的php版本,所以运行:yum install php72w-devel,提示安装成功, 接着运行:/usr/bin/phpize,

一步一步开发文字游戏(wap游戏、mud游戏)(二)

假如想象 提交于 2019-12-23 19:38:49
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 这类文字游戏的服务器大致可以划分为: web前端服务器 战斗服务器 运营后台服务器 web服务器 可以选择一些现有的框架比如ThinkPHP等 未完待续。。 参考: 代码异常 来源: oschina 链接: https://my.oschina.net/u/1762811/blog/3146367

ThinkPHP5开发的正确姿势——PHP最佳实践的参考规范

感情迁移 提交于 2019-12-22 16:28:48
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 安装篇 使用composer,既然是趋势就早日拥抱,能写PHP的这点工具用不来说不过去(另外官方的所有扩展都会以composer方式提供); 如果只需要核心单独安装核心框架就行了,应用仓库并非必须; 如果你安装的是dev-master,composer更新的也是开发版,如果安装的是正式版那么更新的也是最新的正式版(就和Chrome的开发版和正式版一样); 把web根目录指向public目录而不是根目录; 资源文件不要放到public目录以外; TP5完美支持PHP7,不要以为基于PHP7写的框架才会支持PHP7; 如果你的环境是PHP7,你的应用中完全可以使用PHP7的特性; 不要使用普通URL模式访问; TP5正常运行需要PHP5.4+,建议版本为PHP5.6+; 变量篇 避免直接获取系统变量,用Request对象的相关方法替代; 不要管get还是post请求,统一用param方法获取当前请求(任何请求类型)变量; 不要直接操作改变当前请求的系统变量; 使用操作方法的参数绑定功能,而不是自己手动获取请求参数; 使用依赖注入(TP5的依赖注入非常的简单); 对于一些请求用到的公共属性可以使用Request属性注入; 用Request类的getInput方法替代file_get_contents(' php:/

php的html_entity_decode函数

廉价感情. 提交于 2019-12-21 17:20:24
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 背景 在开发 拇指动力 的时候,需要做站长统计。要求在后台填入统计代码,然后在前台读取出来。最后在前台读出出来之后,发现双引号给转成了"。导致js代码不成解释。 解决方法 使用html_entity_decode函数把输出的内容转码。 原来的代码如下: <div id="zztj"> {:base64_decode(C('ZZTJ_CODE'))} </div> 修改后的代码是: <div id="zztj"> {:html_entity_decode(base64_decode(C('ZZTJ_CODE')))} </div> 然后问题就这么坑爹的给解决了。 来源: oschina 链接: https://my.oschina.net/u/209993/blog/494712

Linux系统下ThinkPHP5链接MsSQL

天大地大妈咪最大 提交于 2019-12-21 15:48:19
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 案例 CentOS6.8系统ThinkPHP5链接MsSQL数据库。 分析 ThinkPHP5提供了Mysql、Pgsql、Sqlite和Sqlsrv四种数据库驱动。Window系统下有现成的php_sqlsrv.dll扩展可用,但Linux系统中没有(本人没有找到)。 尝试1未成功,写来以备其它用途 安装freetds wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-patched.tar.gz tar -zxvf freetds-patched.tar.gz cd freetds-* ./configure --prefix=/usr/local/freetds --with-tdsver=auto --enable-msdblib --with-gnu-ld --enable-shared --enable-static make && make install 安装mssql wget http://cn2.php.net/distributions/php-5.6.22.tar.gz tar -zxvf php-5.6.22.tar.gz cd php-*/ext/mssql /usr/local/php/bin/phpize .

PHP使用topthink/think-queue消息队列实例

蹲街弑〆低调 提交于 2019-12-19 11:36:56
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 前提:thinkphp5框架基础上,已包含topthink/think-queue消息队列依赖包。 1、创建job数据表(字段不要更改) CREATE TABLE `tp_jobs` ( `id` int(11) NOT NULL AUTO_INCREMENT, `queue` varchar(255) NOT NULL, `payload` longtext NOT NULL, `attempts` tinyint(3) unsigned NOT NULL, `reserved` tinyint(3) unsigned NOT NULL, `reserved_at` int(10) unsigned DEFAULT NULL, `available_at` int(10) unsigned NOT NULL, `created_at` int(10) unsigned NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 2、配置(配置文件位于 application/extra/queue.php) return [ 'connector' => 'database' //驱动类型,可选择 sync(默认):同步执行