<?php //定義app命名空間 namespace app\index\controller; //定義類名,類名和文件名保持一致 class Index { //編寫一個方法 public function index(){ return "This is PHP Class Name." } } ?>
class User extends commonUser { public function demo(){ //直接return 繼承過來的方法 showName() return $this -> showName("kevin.chen"); } }
ThinkPHP 瀏覽器測試模塊地址:php
http://serverName/index.php(或者其它應用入口文件)/模塊/控制器/方法/[參數名/參數值...]
css
serverName
後面應該爲 tp5 的入口文件而非 phpstudy 的入口文件路徑,不然會報一個莫名其妙的 403 錯誤!
當前服務器地址爲 http://localhost
當前入口文件路徑爲 tp5/public/index.php
當前模塊/控制器/方法爲 index/index/test
Index.phpmysql
測試當前模塊web
ThinkPHP 修改默認配置 ,修改convention.php 能夠達到修改配置php的目的,可是儘可能不要對這個配置做任何的改變,不然之後對這個框架進行任何的升級會帶來意想不到的錯誤。sql
ThinkPHP 應用配置,修改當前應用的配置能夠替換當前 PHP 默認的配置信息。應用配置目錄 conf,全部的關於應用配置都在這個目錄下修改thinkphp
此時 index.php 就是入口文件,全部要訪問控制器模塊的方法必需要通過這個入口文件才能進入控制器模塊,這樣是不安全的。隱藏入口文件就是這個緣由,須要修改 Apache中的 httpd.conf 文件,以 phpstudy 爲例:數據庫
第二步,找到網站根目錄,DocumentRoot "E:\soft\phpstudy2018\PHPTutorial\WWW",將 AllowOverride 設置爲 Allapache
第二步,打開 thinkphp 框架的配置文件 convention.php 找到 auto_bind_module 這個入口自動綁定模塊的配置信息json
將它複製到 咱們應用的配置文件中 app\conf\config.php 中,將默認值改成 truewindows
第三步,在咱們的應用中新建一個提供給第三方的模塊,app\aip\controller\Api.php
思考:若是咱們有多個入口文件,路徑相同,指向應用相同,入口文件對應應用中的模塊,只要在寫 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來調用數據庫,操做數據庫。
數據庫配置路徑爲:
<?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
project 應用部署目錄
├─application 應用目錄(可設置),全部的應用都寫在這裏,常用
│ │ ├─config.php 模塊配置文件
│ │ ├─common.php 模塊函數文件
│ │ ├─controller 控制器目錄
│ │ ├─model 模型目錄
│ │ ├─view 視圖目錄
├─admin(後臺的邏輯,對應index模塊)
│ ├─common.php php的公共函數,能夠寫在這裏,任何地方均可以調用,應用公共(函數)文件
│ ├─tags.php 是對 ThinkPHP 框架進行擴展而不須要修改源碼
├─extend 加載第三方庫時使用,直接將類庫下載到這個目錄
│ ├─static 靜態資源存放目錄(css,js,image)
├─robots.txt 搜索引擎爬蟲定義規則
│ └─.htaccess 用於 apache 的重寫
├─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 命令行入口文件