ThinkPHP架構初步掌握

來源:互聯網
上載者:User

標籤:名稱   成員   thinksns   項目配置   class   開頭   api   php檔案   檔案結構   

為了幫老師用ThinkSNS二次開發一個微博系統,專門花了幾天學習ThinkPHP架構,現在將一些ThinkPHP入門知識作以記錄。

 

首先聲明:

本文不是完全教程,只是將開發中碰到的問題作以總結,如果需要學習ThinkPHP架構,請參考官網文檔:

官網首頁

ThinkPHP3.1快速入門教程(更新中) ThinkPHP完全開發手冊 ThinkPHP3.1 API手冊

附:開源微博系統ThinkSNS

 

目錄結構

目錄/檔案 說明
ThinkPHP.php 架構入口檔案
Common 架構公用檔案目錄
Conf 架構設定檔目錄
Lang 架構系統語言目錄
Lib 系統核心基底類別庫目錄
Tpl 系統模板目錄
Extend 架構擴充目錄(關於擴充目錄的詳細資料請參考後面的擴充章節)

 

 

 

 

 

 

 

 

 

我的檔案結構

 

入口(ThinkPHP.php)

1、先在Web根目錄(我用的phpstudy,是www檔案夾)下面建立一個app項目(這個app就是我們的項目名)。

2、將下載的ThinkPHP解壓(我是解壓到app下,名為ThinkPHP)。

3、在app目錄下面建立一個index.php檔案,添加兩行簡單的代碼:

    <?php
    define("APP_DEBUG", TRUE);  //開啟偵錯模式,方便調試   require ‘/ThinkPHP架構所在目錄/ThinkPHP.php‘;  //我的為/ThinkPHP/ThinkPHP.php

這行代碼的作用就是載入ThinkPHP架構的入口檔案ThinkPHP.php,這是所有基於ThinkPHP開發應用的第一步。
然後,在瀏覽器中訪問這個入口檔案。

        http://localhost/app/index.php

因為index.php為預設首頁,所以亦可省略。

 

模板(Tpl)

Tpl檔案夾下為模版頁面,可放置html、php等頁面。

同時支援多模組,即可在Tpl下建立多個檔案夾,每個檔案夾對應一個模組,同時一個模組和一個控制器對應(需要名字相同)

我的:

兩個模組Form、Index

Tpl下對應有兩個檔案夾Form、Index

則對應的控制器也是兩個FormController.class.php、IndexController.class.php

 

控制器(Controller)

命名:模組名+Controller

PATHINFO模式:是系統的預設URL模式,提供了最好的SEO支援,系統內部已經做了環境的相容處理,所以能夠支援大多數的主機環境。

對應上面的URL模式,PATHINFO模式下面的URL訪問地址是:

    http://localhost/app/index.php/module/action/var/value/
  //module為模組名稱(控制器名稱)、不帶Controller  //action為操作名稱(控制器中的方法名稱)、不帶Model  //var為參數名  //value為參數值
  //var與value成對出現

我的:

    http://localhost/app/index.php/Index/index
  調用IndexController下的index()方法  
  如果該方法不存在,將直接調用Tpl/Index/index.html頁面

 

模型(Model)

1、命名:模組名字+Model

在ThinkPHP的模型裡面,有幾個關於資料表名稱的屬性定義,在對應的Model中聲明為屬性欄位(或者叫成員變數):

屬性 說明
tableName 不包含表首碼的資料表名稱,一般情況下預設和模型名稱相同,只有當你的表名和當前的模型類的名稱不同的時候才需要定義。
trueTableName 包含首碼的資料表名稱,也就是資料庫中的實際表名,該名稱無需設定,只有當上面的規則都不適用的情況或者特殊情況下才需要設定。
dbName 定義模型當前對應的資料庫名稱,只有當你當前的模型類對應的資料庫名稱和設定檔不同的時候才需要定義。

 

 

 

只要命名規範,ThinkPHP會根據Model名字找到你要調用的資料庫表,當然,前提你得建立。

規則:

1)表名為tp_categories(tp_為表首碼,在設定檔中配置)

 

    protected $tableName = ‘categories‘; 

 

2)表名為top_depts,top_不是系統配置的表首碼,需要使用表的全名

    protected $trueTableName = ‘top_depts‘; 

3)可設定資料庫

    protected $dbName = ‘top‘;

 

調用:

可調用本模組Model,也可跨項目或模組調用。

本模組:

 

D("UserModel")

 

 

跨項目:

 

D("UserModel", "app")  //D(Model名稱,項目名稱)

 

M方法與D方法類似,不過,我只用了D方法

 

 

函數庫

可通過load(@.hello),hello為函數庫檔案名稱

也可通過在項目設定檔中定義LOAD_EXT_FILE參數,例如:

    "LOAD_EXT_FILE"=>"user,db"

 

類庫

通過import可引入使用的類包,可跨項目或模組

import("App.Model.UserModel");
App為應用程式名稱Model表明是模型UserModel為模型名稱

 

資料庫

這塊東西太多,使用也最頻繁,因此,官方文檔介紹的很詳細,請大家點擊文章開頭的連結查看

 

寫了好久,希望對大家有點用處。

 

 

原文連結:http://www.cnblogs.com/FlyFive/archive/2013/01/06/2848246.html

ThinkPHP架構初步掌握

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.