在phpstudy中安裝並使用ThinkPHP 5

 
 
最近在慕課網學習 thinkphp,因爲教師使用的是 MAC下的 MAMP 環境,而我使用的是 win7 的 phpstudy,區別不大,記錄在這裏,方便查詢。
 
不一樣系統集成環境安裝:
mac 安裝MAMP
windows 安裝phpstudy
 
 
我最近在用 mac 機,可是尚未使用過 MAMP ,所以先嚐試使用 phpstudy 來學習,後續追加 MAMP 的方法。
 
phpstudy安裝ThinkPHP步驟:
  1. 進入ThinkPHP官網,下載完整版本:http://www.thinkphp.cn/
  2. 解壓出下載的 ThinkPHP 複製全部文件
  3. 在 phpstudy 安裝路徑下的找到 www 文件夾,新建 tp5 文件夾,將解壓的全部 ThinkPHP 文件粘貼到tp5中
  4. 重啓 phpstudy
  5. 在瀏覽器中輸入 http://localhost/tp5/public/
  6. 顯示爲 「 ThinkPHP V5
    十年磨一劍 - 爲API開發設計的高性能框架」即爲安裝成功
ThinkPHP 規範:
  1. 全部的目錄要使用小寫+下劃線
  2. 函數文件名必須以 .php 結尾
  3. 命名空間 namespace 必須和目錄路徑一致:  <? php namespace app\index\controller 
  4. 類庫名必須和文件名保持一致,首字母必須大寫,採用駝峯式書寫:文件名爲 Index.php 那麼類庫名必須爲 class Index {...}
  5. 函數名必須爲首字母小寫,採用駝峯書寫格式: pubilc function getUserName(){...}
  6. 變量名首字母小寫,採用駝峯書寫格式:public $userName = '';
  7. 構造函數名以雙下載線+小寫字母,這種文件儘可能不用:public function __controll(){...}
  8. 常量必須所有大寫而且如下劃線鏈接:define('APP_STATE','dev');
  9. 全部配置名必須所有小寫而且如下載線鏈接:'app_namespace' => 'app',
  10. 數據庫或表名必須以小寫字母加下載線鏈接,不能出現駝峯或首字母大寫:user_name
  11. 頂及命名空間(目錄)統一叫 app,造成良好的開發方式:namespace app\index\controller  從命名空間來看這個路徑就是目錄的路徑
 
ThinkPHP 模塊的創建:
  1. 將 application 文件夾名稱更改成 app。能夠此文件夾下新建各類模塊,好比首頁(index)、登陸管理(admin)、用戶管理(user)等
  2. 創建首頁(index)爲例,路徑爲:app\index\controller\Index.php(意爲index模塊的控制器controller下的Index.php 文件)
  3. 創建方法  1)定義模塊的命名空間 namespace app\index\controller;  2)定義類名 class Index {...}  3) 寫方法 public function index(){...}
  4. 修改 public/index.php 路徑,指向目錄app,也就是入口路徑 
    define ( 'APP_PATH' , __DIR__ . '/app/' );
<?php
      //定義app命名空間
      namespace app\index\controller;

      //定義類名,類名和文件名保持一致
      class Index {
            //編寫一個方法
            public function index(){
                  return "This is PHP Class Name."
            }
      }
?>

 

ThinkPHP 經過別名導入其它模塊中的方法,別名是經過操做符 use 來實現的:
  1. 導入:use app\common\controller\User as commonUser;導入app\模塊名稱\controller\文件名稱 as 別名(別名以模塊名稱+方法名稱,駝峯組合)】
  2. 繼承: class User extends commonUser { ... } 將導入的方法繼承給當前類,在當前類中的方法中使用
  3. 使用: 直接在當前方法中使用繼承過來的方法
class User extends commonUser
{
     public function demo(){
          //直接return 繼承過來的方法 showName()
          return $this -> showName("kevin.chen");
     }
}

 

ThinkPHP 瀏覽器測試模塊地址:php

http://serverName/index.php(或者其它應用入口文件)/模塊/控制器/方法/[參數名/參數值...]css

http://localhost/tp5/public/index.php/index/index/test
 
這裏須要注意一點,phpstudy中的入口文件默認爲 www目錄下的index.php,tp5的入口文件爲 public目錄下的index.php。
由於要測試 tp5 的模塊,所以,須要把 tp5 的入口文件做爲應用的入口文件,serverName 後面應該爲 tp5 的入口文件而非 phpstudy 的入口文件路徑,不然會報一個莫名其妙的 403 錯誤!
 
如下圖爲例,當前爲 phpstudy的入口:
  1. 當前服務器地址爲 http://localhost
  2. 當前入口文件路徑爲  tp5/public/index.php
  3. 當前模塊/控制器/方法爲  index/index/test
 
個人目錄樹爲下圖,用下圖來看上面的路徑會一目瞭然

 

Index.phpmysql

測試當前模塊web

ThinkPHP 修改默認配置 ,修改convention.php 能夠達到修改配置php的目的,可是儘可能不要對這個配置做任何的改變,不然之後對這個框架進行任何的升級會帶來意想不到的錯誤。sql

  1. 在 public/index.php 中新建一個常量  
    //定義配置文件目錄
    define('CONF_PATH', __DIR__ . '/../conf/')
  2. 與app同級新建一個 conf 目錄
  3. 在index 模塊的文件 Index.php 中新建一個方法,起名爲 testConfig 
    public function testConfig(){
        dump(config());
    }
  4. 瀏覽器中測試 http://localhost/tp5/public/index.php/index/index/testConfig  返回當前狀態的全部配置,當前狀態的配置來源於 thinkphp>convention.php
  5. 修改 convention.php ,添加
      //默認做者
      'app_author'    => 'kevin.chen' , 刷新 url 便可看到 config 配置中已經添加一個  app_author 的數組

 

ThinkPHP 應用配置,修改當前應用的配置能夠替換當前 PHP 默認的配置信息。應用配置目錄 conf,全部的關於應用配置都在這個目錄下修改thinkphp

 
  1. 在 app 下新建一個後臺的模塊 admin\controller\Index.php
  2. public function showAdminConfig(){
        dump(config());
    };
  3. 在瀏覽器中輸入http://localhost/tp5/public/index.php/admin/index/showAdminConfig 一樣能夠打印出 php的配置,可是咱們是不要使用 php 框架的配置文件信息的,咱們是要打印本身應用的配置信息,所以須要創建本身應用的 config.php 配置文件
  4. 同 app 同級創建一個 conf 的目錄,在這個目錄下創建一個 config.php 配置文件,這個配置文件中直接 return 一個數組,這個數組就是 當前應用的配置信息
          return [
                "app_name"            => "my_anviz",
                "app_author"          => "kevin.chen",
                "app_email"           => "11452155@qq.com",
          ]
  5. 再次刷新 http://localhost/tp5/public/index.php/admin/index/showAdminConfig 就能夠看到 打印的配置信息的尾部,增長了剛剛增長的數組。
  6. 說明應用配置信息是能夠改變 PHP框架的配置信息的。若是想改變 php 的配置信息不能夠修改convention.php文件,只需修改當前應用的配置信息便可改變 php 的配置信息。
  7. 好比想要修改 PHP中的調試模式爲 true,只需在當前應用的配置文件中增長一條 
    app_debug => true 的配置信息便可改變原 php 的配置信息。
         return [
                "app_name"            => "my_anviz",
                "app_author"          => "kevin.chen",
                "app_email"           => "11452155@qq.com",
                "app_debug"           => true
          ]
 上面url刷新以後顯示爲

 

 

ThinkPHP 請求
全部的請求都會進入 public\index.php ,再經過攜帶不一樣的參數而進入不一樣的控制器中,不一樣的控制器實現不一樣的操做,最終實現不一樣的功能,如:增、刪、改
 
ThinkPHP 隱藏請求入口文件
好比:http://localhost/tp5/public/ index.php/index/index/test,能夠正常返回數據

此時 index.php 就是入口文件,全部要訪問控制器模塊的方法必需要通過這個入口文件才能進入控制器模塊,這樣是不安全的。隱藏入口文件就是這個緣由須要修改 Apache中的 httpd.conf 文件,以 phpstudy 爲例:數據庫

 

phpstudy 面板 -> 其它選項菜單 -> 打開配置文件 -> httpd.conf
  ·
第一步:搜索 rewrite ,將 LoadModule rewrite_module modules/mod_rewrite.so 這句打開

 

 第二步,找到網站根目錄,DocumentRoot  "E:\soft\phpstudy2018\PHPTutorial\WWW",將 AllowOverride 設置爲 Allapache

 

 

第三步,重啓 phpstudy
 
這裏咱們在瀏覽器中從新輸入去掉入口文件的請求地址:http://localhost/tp5/public/index/index/test  能夠看到返回正確的數據
此時,隱藏請求入口文件成功!
 
若是以上文件配置不成功,必需要在請求地址中添加入口文件才能夠請求成功!
 
ThinkPHP 綁定特殊的入口文件
好比開放給第三方人員時,只能讓第三方訪問特殊的入口文件
 
以 api.php 爲例 方法爲:
第一步:在 入口目錄中新建一個 api.php 入口文件,仿照默認入口文件中寫它的目標常量配置。
  1. 定義應用目錄入口
  2. 定義配置文件目錄入口
  3. 加載框架引導文件

第二步,打開 thinkphp 框架的配置文件 convention.php 找到  auto_bind_module 這個入口自動綁定模塊的配置信息json

將它複製到 咱們應用的配置文件中 app\conf\config.php 中,將默認值改成 truewindows

第三步,在咱們的應用中新建一個提供給第三方的模塊,app\aip\controller\Api.php

此時,咱們訪問爲第三方配置的接口爲:http://localhost/tp5/public/api/api/testApi
 
正常顯示爲:

 

 思考:若是咱們有多個入口文件,路徑相同,指向應用相同,入口文件對應應用中的模塊,只要在寫 url 請求時 ,更改應用的模塊名就能夠訪問不一樣的模塊。是這樣嗎?

 

 ThinkPHP 是個單入口框架,全部的入口都會進入 index.php 文件,經過 index.php來接收全部的http請求,請求中的全部參數均可以經過 Request 這個對象進行接收和處理。

下面就寫 thinkPHP 的 Request 這個對象是怎麼對請求進行處理的,首先要知道如何獲取 request 這個對象的?

<?php
           namespace app\index\controller;
           use think\request;  //Request 對象要從think\request 中獲取
           class Index
           {
                 //注入對象的方式
                 public function index(Request $request){
                       dump($request);
                 }
           }
?>

#若是想了解更加詳細的 $request 的方法,就去 ThinkPHP/library/think/Request.php 中查看全部的方法

如下列舉了經常使用的對參數獲取的方法:

 

<?php
    namespace app\index\controller;
    use think\request;
    
    class Index
    {
        
        public function getRequest(Request $request){
                 #獲取瀏覽器的值
                 #若是當前請求地址爲:http://localhost/tp5/public/index/index/getRequest

dump($request -> domain());        //獲取瀏覽器的域名,返回爲 "http://localhost"
dump($request -> pathinfo());      //獲取參數前的全部的路徑,返回爲 "index/index/getRequest"
dump($request -> path());          //獲取不含文件後綴的路徑,若是沒有後綴,pathinfo()同path()返回的對象是同樣的,返回爲 "index/index/getRequest"

                  #判斷請求類型
                  #若是當前請求地址爲:http://localhost/tp5/public/index/index/getRequest?id=5
                  
dump($request -> method());        //返回爲 "GET" ,在web開發中通常只有GET與POST 兩種請求類型
dump($request -> isGet());         //判斷當前請求是否爲GET,返回爲一個布爾值爲true = bool(true)
dump($request -> isPost());        //判斷是否爲post請求,返回應該 爲false
dump($request -> isAjax());        //判斷當前請求是否爲 Ajax 請求,返回應該 爲false

                  #獲取請求參數
                  #若是當前請求地址爲:http://localhost/tp5/public/index/index/getRequest?id=5&page=10
                  
dump($request -> get());           //獲取當前的get ?後的參數,返回key爲id,value爲5: ["id"] => string(1) "5"
dump($request -> param());         //獲取當前的get ?前的參數,返回key爲id,value爲5: ["id"] => string(1) "5"
dump($request -> post());          //獲取當前 post 的值,當前url是個get請求,所以只會返回一個空的數組 array(0) {}


                  #測試session,獲取當前瀏覽器的 session 的值,若是沒有隻會返回一個空的數組 array(0) {}
                  #一、若是想要在瀏覽器中打印出來,須要進入thinkphp/convention.php,複製session配置到當前應用的config.php中
                  #二、須要使用助手方法給session,set一個值

session('name','kevin.chen');             //設置 session 的值
dump($request -> session());              //返回一個數組 array(1) {["name"] => string(10) "kevin.chen"}

                  #測試 cookie,首先須要set一個值
cookie('email','don-pan.cwf@163.com');    //設置cookie的值
dump($request -> cookie());               //獲取 cookie的值,會返回一個 PHPSESSID 的值


                  #獲取某個參數的值
                  #若是當前請求地址爲:http://localhost/tp5/public/index/index/getRequest?id=5&page=10
                  #在查詢時一般使用經過某個 id 來查詢等
                  
dump($request -> get('id'));               //返回 "5"
dump($request -> cookie('email'));         //返回 "don-pan.cwf@163.com"
dump($request -> post("id"));              //不存在的id,返回爲null
dump($request -> param("page"));           //返回爲 "10"



                 #獲取當前的模塊 控制器 方法
                 #若是當前請求地址爲:http://localhost/tp5/public/index/index/getRequest?id=5&page=10
                 #在編寫權限控制時,經過這三個選項共同來驗證是否有權限訪問
                  
dump($request -> module());                //返回當前模塊名爲 index
dump($request -> controller());            //返回當前控制器名爲 Index (首字母大寫)
dump($request -> action());                //返回當前方法名爲 getRequest



                 #獲取當前 url
                 #若是當前請求地址爲:http://localhost/tp5/public/index/index/getRequest?id=5&page=10
                  
dump($request -> url());                   //返回 "/tp5/public/index/index/getRequest?id=5&page=10"
dump($request -> baseUrl());               //返回不包含參數的url"/tp5/public/index/index/getRequest"

                }
         }
?>        

 

 ThinkPHP 鏈接數據庫,並查詢表

第一步,要新建數據庫,phpMyAdmin,使用它來建庫建表

第二步,數據庫必須與PHP進行配置,纔可使用PHP來調用數據庫,操做數據庫

數據庫配置路徑爲:

  1. 找到 thinkPHP -> convention.php ,找到 數據庫設置【database】這個數組
  2. 在當前應用的 conf 目錄下,新建一下 database.php 文件
  3. 將 database 裏面的key,value複製到新建的 database.php 當中,分別對 數據庫中的 key 設置它的 value(配置紅色註釋部分
  4. 將這個數組 return 返回
<?php
    //數據庫配置
    use\think\Env;
    
    return  [
        // 數據庫類型
        'type'            => 'mysql',
        // 數據庫鏈接DSN配置
        'dsn'             => '',
        // 服務器地址
        'hostname'        => '127.0.0.1',
        // 數據庫名
        'database'        => 'test',
        // 數據庫用戶名
        'username'        => 'root',
        // 數據庫密碼
        'password'        => 'root',
        // 數據庫鏈接端口
        'hostport'        => '3306',
        // 數據庫鏈接參數
        'params'          => [],
        // 數據庫編碼默認採用utf8
        'charset'         => 'utf8',
        // 數據庫表前綴
        'prefix'          => ''
    ]
?>

第三步,配置好數據庫以後,就能夠對數據庫進行操做了

在當前模塊下新建一個方法,取名爲 testDataBase

# 首先要加載 thinkphp 的db 方法
# 再用 db 的助手方法查詢表

<?php
    namespace app\index\controller;
    use think\Db;
    
    class Index
    {
          #測試數據庫是否鏈接成功
          public function testDataBase(){
              $res = db('user') -> find();
              dump($res);
          }
        }    
?>    

咱們在瀏覽器中輸入以下 url ,就能夠看到查詢的表數據了:

http://localhost/tp5/public/index/index/testDataBase

array(3) {
  ["user_id"] => int(1)
  ["user_name"] => string(10) "kevin.chen"
  ["user_age"] => string(2) "34"
}

返回3個字段,每一個字段的 key,數據類型,value


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
 
 
 
ThinkPHP 目錄說明:
 
project  應用部署目錄
├─application             應用目錄(可設置),全部的應用都寫在這裏,常用
│  ├─common                                        公共模塊目錄(可更改)
│  ├─ index(MVC)主要頁面部分的邏輯              模塊目錄(可更改)
│  │  ├─config.php       模塊配置文件
│  │  ├─common.php       模塊函數文件
│  │  ├─controller       控制器目錄
│  │  ├─model           模型目錄
│  │  ├─view            視圖目錄
│  │  └─ ...            更多類庫目錄
│    ├─admin(後臺的邏輯,對應index模塊)      
│  ├─command.php                         php配置文件
│  ├─common.php         php的公共函數,能夠寫在這裏,任何地方均可以調用,應用公共(函數)文件
│  ├─config.php                               php應用的配置文件,整個應用都讀取這個文件,應用(公共)配置文件
│  ├─database.php                          數據庫配置文件,鏈接數據庫的方法,須要修改這個文件
│  ├─tags.php          是對 ThinkPHP 框架進行擴展而不須要修改源碼
│  └─route.php                                 路由配置文件,對url進行假裝美化,能夠修改這個文件
├─extend               加載第三方庫時使用,直接將類庫下載到這個目錄
├─ public                                          網站根目錄,全部網站的文件都要放在這個目錄下,WEB 部署目錄(對外訪問目錄)
│  ├─static           靜態資源存放目錄(css,js,image)
│  ├─index.php                                 網站的入口文件,應用入口文件
│  ├─router.php                                更改url地址文件
  ├─robots.txt         搜索引擎爬蟲定義規則
│  └─.htaccess         用於 apache 的重寫
├─ runtime                                        網站運行中的緩衝文件,包含日誌,緩存,編譯文件等
├─vendor               第三方類庫目錄(Composer)
├─thinkphp             框架系統目錄
│  ├─lang             語言包目錄
│  ├─library           框架核心類庫目錄 │  │  ├─think         框架的核心文件,Think 類庫包目錄 │  │  └─traits         系統 Traits 目錄 │  ├─tpl              框架默認的一些模板,系統模板目錄 │  ├─.htaccess          用於 apache 的重寫 │  ├─.travis.yml        CI 定義文件 │  ├─base.php           定義一些常量,基礎定義文件 │  ├─composer.json       composer 定義文件,配置文件 │  ├─console.php        控制檯入口文件 │  ├─convention.php      框架默認的配置文件,慣例配置文件 │  ├─helper.php         助手函數文件(可選) │  ├─LICENSE.txt        受權說明文件 │  ├─phpunit.xml        單元測試配置文件 │  ├─README.md          README 文件 │  └─start.php          框架引導啓動文件 ├─build.php             自動生成定義文件(參考) ├─composer.json          composer 定義文件 ├─LICENSE.txt           受權說明文件 ├─README.md             README 文件 ├─think                 命令行入口文件
相關文章
相關標籤/搜索