zoukankan      html  css  js  c++  java
  • Tp5.1开发初入门

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

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

    安装

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

    image-20190419010304417

    配置文件

    它这个是从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,也一般用这个做接口,简单高效,需要什么,自已搭建可控,多好。

  • 相关阅读:
    redis 中 set 和 hset 有什么不同,什么时候使用 hset 什么时候使用set?
    redis的底层数据结构
    python开发-实现redis中的发布订阅功能
    使用redis-py的两个类Redis和StrictRedis时遇到的坑
    python使用redis实现协同控制的分布式锁
    深入理解 Python 异步编程(上)
    linux中read,write和recv,send的区别
    socket常见问题
    python socket 编程之三:长连接、短连接以及心跳
    Flask快速入门
  • 原文地址:https://www.cnblogs.com/smartrui/p/10733596.html
Copyright © 2011-2022 走看看