今天需要给金融部门那边做一个信用卡的推广页面,他们系统是用PHP的tp框架做的。我记得最早做tp还是2的时候,和现在的5.1相差太大了,中间开发的时候,还是遇到了点问题。所以,把今天的问题记录下,作个备案。

最新版的tp感觉和laravel差不多吧,不过,我一直不太喜欢那种重框架,所以一般也就是需要的时候才去研究看下,由于时间急,我没有细看tp最新的文档,都是直接看到他们项目原来的结构。中间遇到了点低级问题

安装

这个好像没啥,直接把工程搞下来的,和tp目录结构一样,虚机配置把主目录配置的public下面就行了

配置文件

它这个是从config/目录来读取的。里面分成了很多不同的文件,配置是单独分开的。另外,如果工程下面有.env文件,那么配置可以配置在这个里面,然后在config/下面来读取,如:

.env

[database]
type = mysql
database = 'zfinance'
hostname = '172.13.33.444'
port=3306

config/database.php

return [
// 数据库类型
'type' => Env::get('database.type', 'mysql'), //环境变量取不到,取默认
// 服务器地址
'hostname' => Env::get('database.hostname', 'localhost'),

不过,如果模块下面有配置,则优先取模块的配置,如application/index/config/database.php

路由

开始通过url,去对应的模块下找controller没找到,后面发现它配置了路由。

首先我看项目的route目录下面定义了几个路由配置,如admin.php,api.php

Route::rule('card/:controller/:action', 'admin/:controller/:action');

这种灵活配置自已想要的路由,上面顾名思义就是访问card/xxx/xx 到 admin/xxx/xx路由

模型

原来的系统有一个类似这样的查询

$list = CreditCardModel::where('status', CreditCardModel::STATUS_ACTIVE)
->where('sale', 1)
->order(['id'=>'desc'])
->select()
->append(['b_id_text', 'bank_icon'])
->toArray();

里面有一个append,这个方法后面接了数组是b_id_text,bank_icon这种,我的表里面是没有b_id_text这种的,但是$list输出来是有的。后面看文档,这个叫获取器,可以把数据合并到当前的行,但是需要在模型层中定义方法,类似这样

protected function getBidTextAttr($value, $data)
{
if(empty($data['b_id'])) {
return '';
}
$bank = Bank::getCacheInfo($data['b_id']);
return $bank['name'] ?: '';
}
protected function getBankIconAttr($value, $data)
{
if(empty($data['b_id'])) {
return '';
}
$bank = Bank::getCacheInfo($data['b_id']);
return $bank['icon'] ?: '';
}

看到就是定义了getXXAttr这样的方法,取代了原来我们把数据查出来后,再去组装。找了好久才找到这种用法,此外,他还有一个setXXAttr做设置的,原理一样,只不过是在做存储的时候用到的。

模板渲染

本来这个系统是前台端分离的,但我今天这个没有用,所以用的服务端渲染的,里面有一个配置

default_return_type => 'json'; //支持html,json,xml等

我在控制器里面,使用

return $this->fetch('index');

出来的会是json格式的,这里需要使用 快捷函数,表示使用某种类型输出

return view('index'); //还有json('index'); xml('index')等

好了,搞定了上面的这些,就可以开发了,基本也都不难,可以说就是tp的一些基本了,由于我没有细看文档,所以,中间可能浪费了点时间。

感觉现在的php框架,也越来越长得相像了。这也是好事,基本上会一种,其它的有些也能猜出来,不过,我还是不喜欢这种需要花时间去学的框架,只是要的时候学习下,我喜欢Yaf,也一般用这个做接口,简单高效,需要什么,自已搭建可控,多好。

Tp5.1开发初入门的更多相关文章

  1. Apache Beam入门及Java SDK开发初体验

    1 什么是Apache Beam Apache Beam是一个开源的统一的大数据编程模型,它本身并不提供执行引擎,而是支持各种平台如GCP Dataflow.Spark.Flink等.通过Apache ...

  2. SpringBoot 初入门

    SpringBoot 初入门 关于介绍什么之类的就不讲了,主要做一下学习记录. 1. 启动方式 IDEA 启动 命令行启动: mvn spring-boot:run 部署到服务器启动: 先进行打包, ...

  3. Xamarin.iOS开发初体验

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0

  4. [Intel Edison开发板] 03、Edison开发IDE入门及跑官方提供的DEMO

    一.启动Eclipse爱迪生开发板IDE eclipse开发环境在iss-iot-win_03-14-16中,但是一定每次都是点bat脚本启动,否则就会少东西(windows->preferen ...

  5. [Intel Edison开发板] 02、Edison开发板入门

    一.前言 Start from the link: 开始学习的链接 上面链接是官网的教程,按照教程可以开发板入门: 其中第一步是了解开发板,涉及到如何组装.如何连线.一些主要的接口简单介绍等信息: 第 ...

  6. 续关于C#的微信开发的入门记录一

    前几天写了一篇博客<关于C#的微信开发的入门记录一>,原文地址:http://www.cnblogs.com/zhankui/p/4515905.html,现在继续完善: 目前很多小伙伴都 ...

  7. 使用scala开发spark入门总结

    使用scala开发spark入门总结 一.spark简单介绍 关于spark的介绍网上有很多,可以自行百度和google,这里只做简单介绍.推荐简单介绍连接:http://blog.jobbole.c ...

  8. 学Android开发,入门语言java知识点

    学Android开发,入门语言java知识点 Android是一种以Linux为基础的开源码操作系统,主要使用于便携设备,而linux是用c语言和少量汇编语言写成的,如果你想研究Android,就去学 ...

  9. Transform组件C#游戏开发快速入门

    Transform组件C#游戏开发快速入门大学霸 组件(Component)可以看作是一类属性的总称.而属性是指游戏对象上一切可设置.调节的选项,如图2-8所示.本文选自C#游戏开发快速入门大学霸   ...

随机推荐

  1. IOS系统在Safari安装ipa文件

    配置点击下载的地址 itms-services://?action=download-manifest&url= "plist文件路径"plist文件配置 IIS网站配置要 ...

  2. 【亲测有效】Ubuntu18.04 sudo apt update无法解析域名的解决方案

    问题描述如下: 拿起了封尘已久的ThinkPad,输入 sudo apt update 的时候,发现这个命令变得不好使了,具体出现的问题如下图所示: #( 09/08/19@ 2:44下午 )( py ...

  3. ElasticSearch安装及运行的坑

    一.确认centos系统是为64位的,x86的不可以安装 1. 下载elasticsearch包 2. 用 tar -zxvf 解压包 3. 增加一个elk用户,elasticsearch7不可用ro ...

  4. Linux—编译安装详解

    编译安装python3 1.python是通过C语言编写,所以在编译安装python3时需要在C语言环境 [root@localhost ~]# yum install -y gcc 2.python ...

  5. PyCharm彻底删除项目

    直接删除源文件,删不干净,会留下一些文件 1.点击File,选择Close Project 2.关闭项目之后,会弹出一个选择项目的界面,点击你想要删除的项目右边的叉 3.然后找到该项目所在的路径,选中 ...

  6. 一次shell脚本小事故,从中学习排错过程-软件测试

    一次shell脚本小事故,从中学习排错过程 事出,童鞋使用shell脚本搭建测试环境的过称中..... 配置环境变量文件:/etc/profile(用于升级JDK或其他) 手动编辑方法:vi /etc ...

  7. 6. Vue - 声明周期

    一.官方vue生命周期流程图 二.vue声明周期介绍 beforeCreate执行时:data和el均未初始化,值为undefined created执行时:Vue 实例观察的数据对象data已经配置 ...

  8. GitHub如何配置SSH Key

    https://github.com/xiangshuo1992/preload.git git@github.com:xiangshuo1992/preload.git 这两个地址展示的是同一个项目 ...

  9. ADB端口5037被占用 导致adb 停止工作

    解决ADB端口占用问题 方式一 5037为adb默认端口,若5037端口被占用,打开cmd,输入以下指令, 1.查看占用端口的进程PID  netstat -aon|findstr 5037 2. 通 ...

  10. Python else

    Python else else 可以用来搭配其他语句完成条件判断 最常用的就是 if...else... 当然还有一些其他语句也可以配合 else 使用 if if...else... 是最简单的条 ...