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,也一般用這個做接口,簡單高效,需要什么,自已搭建可控,多好。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM