日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

thinkphp笔记

發(fā)布時(shí)間:2025/7/14 php 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 thinkphp笔记 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

thinkphp 筆記
TP框架:
1.模板引擎
2.MVC設(shè)計(jì)模式
3.常用操作類

模板引擎和框架區(qū)別:
1.模板引擎只是框架中用來做php和html分離的

MVC設(shè)計(jì)模式:
M 數(shù)據(jù)模型
V 視圖
C 控制器

V(HTML模板) --smarty()--》 C(PHP邏輯控制) -》M(Model類表操作)

localhost/test/index.php/模塊/操作
localhost/test/index.php/Index/add

目錄結(jié)構(gòu)
ThinkPHP.php 框架入口文件
Common 框架公共文件目錄
Conf 框架配置文件目錄
Lang 框架系統(tǒng)語言目錄
Lib 系統(tǒng)核心基類目錄
Tpl 系統(tǒng)模板目錄
Extend 框架擴(kuò)展目錄

//入口文件定義 index.php
define('APP_NAME',"Home");
define('APP_PATH',"./Home/");
define('APP_DEBUG',true);
include "ThinkPHP/ThinkPHP.php";

TP訪問地址:
http://localhost/test/index.php/Index/index
TP訪問地址參數(shù):
http://localhost/test/index.php/Index/index/id/10 pathinfo地址模式
http://localhost/test/index.php/Index/index?id=10

改變左右定界符 ThinkPHP/Conf/convention.php
'TMPL_L_DELIM' => '<{',
'TMPL_R_DELIM' => '}>',
會(huì)被所有應(yīng)用共享配置文件

localhost/test/index.php/Index/index/
__ROOT__ = /test
__APP__ = /text/index.php
__URL__ = /test/index.php/Index
__ACTION__ = /test/index.php/Index/index
__SELF__ =/test/index.php/Index/index/id/10
__PUBLIC__ =/test/Public
../Public = /test/Home/Tpl/Public
__TMPL__ =/test/Home/Tpl

php中可以使用的路徑常量:
__ROOT__
__APP__
__URL__
__ACTION__
__SELF__

模板中可以使用的路徑模板替換:
__ROOT__
__APP__
__URL__
__ACTION__
__SELF__
__PUBLIC__
../Public
__TMPL__

注意:靜態(tài)資源一定要用網(wǎng)站絕對路徑

C("DB_PORT")//直接獲取配置文件里面的值

//改變默認(rèn)的地址模塊:
Home/Conf/config.php
return array(
'DEFAULT_MODULE'=>'User',
);

Home/Common/common.php
寫到他里面的函數(shù),可以在本應(yīng)用中所有模塊的操作中使用

包含擴(kuò)展類:
import("ORG.Util.Image");//包含ThinkPHP/Extend/Library/ORG/Util/Image.class.php

_initialize()//初始化方法 登錄權(quán)限把控的時(shí)候用
//CommonAction.class.php
專門建一個(gè)類 class CommonAction extends Action{
function _initialize(){
echo "權(quán)限把控";
}
}
//LoginAction.class.php
class LoginAction extends Action{
function index(){
echo "登錄";
}
}
//UserAction.class.php
Class UserAction extends CommonAction{
public function index(){
echo "test";
}
}
綜上,只有l(wèi)ogin不繼承commonaction,其他所有的類都繼承commonaction,這樣自動(dòng)觸發(fā)
login 繼承Action


Thinkphp支持的四種URL模式
1.普通模式
http://localhost/test/index.php?m=Index&a=index
2.pathinfo
http://localhost/test/index.php/Index/index
3.rewrite模式
http://localhost/test/Index/index
rewrite方式來訪問模式和操作:
1).apache必須支持mod_rewrite.so模塊
LoadModule rewrite_module modules/mod_rewrite.so
2).www網(wǎng)站根目錄支持解析rewrite重寫表達(dá)式文件 .htaccess
<Directory "C:/AppServ/www">
Options Indexes FollowSymlinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
注意:options 不能出現(xiàn)Multiviews,AllowOverride 后必須寫ALL

3)..htaccess里面書寫的rewrite表達(dá)式
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME}% !-d
RewriteCond %{REQUEST_FILENAME}% !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
4.兼容模式
http://localhost/test/?s=Index/index

a標(biāo)簽 不能用 href=__URL__/show
要用:U(); a href="<{:U()}>/show"
這種方式對網(wǎng)站的SEO優(yōu)化最好
U有三個(gè)參數(shù) U("show","","html")第一個(gè)參數(shù)是模塊/方法,第二個(gè)參數(shù)是傳參,第三個(gè)參數(shù)是后綴,第四個(gè)是否跳轉(zhuǎn)到那個(gè)頁面
一般跳轉(zhuǎn)不用第四個(gè)參數(shù) 一般用$this->redirect();
或者$this->success('yes',U('show'),5);//有倒計(jì)時(shí)的跳轉(zhuǎn)
$this->erroe('no',U('show'),5);

如果要在模板中使用php函數(shù),要在函數(shù)前面加冒號(hào)
:time() :strtoupper()

調(diào)試模式下 自定義報(bào)錯(cuò)頁面
Home/Conf/config.php
'TMPL_EXCEPTION_FILE' => './Public/error.html',

在操作中獲取當(dāng)前地址中的模塊和方法
1.$_GET[_URL_][0] 當(dāng)前模塊
$_GET[_URL_][1] 當(dāng)前方法
2.MODULE_NAME 模塊名
ACTION_NAME 方法名

常用常量:
MODULE_NAME
ACTION_NAME
IS_GET
IS_POST
IS_AJAX
__ROOT__ 網(wǎng)站根目錄地址
__APP__ 當(dāng)前項(xiàng)目(入口文件)地址
__GROUP__ 當(dāng)前分組的URL地址
__URL__ 當(dāng)前模塊的URL地址
__ACTION__ 當(dāng)前操作的URL地址
__SELF__ 當(dāng)前URL地址
__INFO__ 當(dāng)前的PATH_INFO字符串
__EXT__ 當(dāng)前URL地址的擴(kuò)展名

空模塊
EmptyAction.class.php
空操作
_empty()

URL偽靜態(tài) 省略index.php 地址后面的靜態(tài)后綴
'URL_HTML_SUFFIX' => 'html'
URL路由
URL重寫
URL生成

跨模塊調(diào)用:
$test = A('user'); //user模塊
$test -> index(); //user模塊下的index方法

R('user/index') //user模塊下的index方法 直接調(diào)用

Thinkphp 數(shù)據(jù)庫的add方法!!!!!!!!!!
調(diào)用了htmlspecialchars 還有 mysql_escape_string //這塊要自己測試!!! 否則插入得數(shù)據(jù)可能多一個(gè)反斜線
例如 <b>aaa</b>\"\" => <b>aaa</b>\\"\\"
如果不想這樣 只需要修改DbMysql.class.php
328行
public function escapeString($str)
{
if(get_magic_quotes_gpc()){
return $str;
}
if($this -> _linkID)
{
return mysql_real_escape_string($str,$str->_linkID);
}
else
{
return mysql_escape_string($str);
}
}

AJAX
$this -> ajaxReturn($arr,"aaa",'1')
數(shù)據(jù) 信息 狀態(tài)
$.post(,function(rtn){
//alert(rtn.data.username);
var str = '';
for(var i in rtn.data)
{
str += i+"=>"+rtn.data[i];
}
$("#main").html(str);
})

M方法是默認(rèn)的Model類
D方法是自定義Model類 如果沒有就用系統(tǒng)的基類

查看model類的sql語句
echo $model->getLastSql();

//設(shè)置model類在組合時(shí)真實(shí)的表名
protected $tableName = 'user';

//獲取主鍵
$user->getPk();

$model->create();
//生成model對象中的數(shù)據(jù)對象data,他可以智能過濾post表中字段不相符的下標(biāo)
//自動(dòng)驗(yàn)證 UserModel類里 protected $_validate = array(); 出錯(cuò)的話用$user->getError(); 來獲取錯(cuò)誤
if($user -> create())
{
$user -> add();
}
else
{
echo $user -> getError();
}

UserModel.class.php:
protected $_validate = array(
array('username','requite','用戶名不能為空'),
array('fcode','requite','驗(yàn)證碼不能為空'),
array('password','requite','密碼不能為空'),
array('repassword','password','兩次密碼不一致',2,'confirm'),
array('fcode','checkCode','驗(yàn)證碼有誤',2,'callback'),
);
function checkCode($fcode)
{
if($fcode!=$_SESSION['scode'])
{
return false;
}
}
protected $patchValidate = true;//新版支持?jǐn)?shù)據(jù)的批量驗(yàn)證功能,只需要在模型類里面設(shè)置patchValidate屬性為true( 默認(rèn)為false),設(shè)置批處理驗(yàn)證后,getError() 方法返回的錯(cuò)誤信息是一個(gè)數(shù)組
//自動(dòng)完成 UserModel類里 protected $_auto = array();
//字段映射

添加數(shù)據(jù)兩種方法
1.
$_POST['username'] = 'user5';
$_POST['password'] = '456';
$_POST['regtime'] = time();
$user = M('User');
$user -> add($_POST);
2.
$_POST['username'] = 'user5';
$_POST['password'] = '456';
$_POST['submit'] = '提交';
$user = M('User');
$user -> create();
$user -> regtime = time();
$user -> add();


curd操作
insert: (add)
1.$model -> add();//$model->add($_POST);
2.$model -> create();
$model -> add();

update: (save)
1.$user = D('User');
$user->save($_POST);
2.$user = D('User');
$user -> create();
$user -> save($_POST);
select: (select)
(find)
$rows = $user -> select($id);//多個(gè)結(jié)果 二維數(shù)組
$rows = $user -> find($id);//單個(gè)結(jié)果 一維數(shù)組
$rows = $user -> where("id=$id") -> find();
排序id $rows = $user -> where("id = $id") -> order('id') ->find();
delete: (delete)
$model -> delete($id);
$model -> where("id = $id") -> delete();

連貫操作

mysql左連接
一個(gè)用戶表 成績表
user1 70
user2 80
user3 NULL
user4 NULL
要查所有人的成績,缺考的補(bǔ)0 不能用select user.username,score.num from user,score where user.id = score.uid; //返回的只有user1 和user2
要用左連接
select user.username,if(score.num,score.num,0) from user left join score on user.id = score.uid

left join on 后不能用and 要用where
例如:select user.username,score.num from user left join score on user.id = score.uid where score.num is not null;

模板布局
{__CONTENT__} //替換為原來模板 現(xiàn)在模板是layout.html

控制器關(guān)聯(lián)模型
用戶表-user
電話表-tel
班級(jí)表-class

IndexAction / index
$user = D('User')
$rows = $user -> relation('teltab') -> select();
$rows = $user -> relation(true) -> select();//true全映射,false不映射
//注意:中間的不是真實(shí)的表名而是映射的表名 -- mappingname

UserModel:
protected $_link=array(
'mapping_type' => HAS_MANY,
'class_name' => 'Tel',
'foreign_key' => 'user_id',
'mapping_name' => 'teltab',
'mapping_fields' => 'code',
)

師徒:
跨膜版 display(Test:show)
$str = $this -> fetch('Test:index')

模板引擎:
$Think.now 時(shí)間 $think.const//define('HOST','a') 常亮
調(diào)用函數(shù)
<{$name|strtoupper}>

<{$time|date='Y-m-d H:i:s',###}>//date("Y-m-d H:i:s",time())
$this->time= time();

模板for循環(huán) else一定要加/

include包含文件
<include file='public:header'/>
包含header.html
$CIP = get_client_ip()//得到用戶IP
$ips = $IP -> getlocation($CIP)//知道用戶在哪個(gè)區(qū)
<import> 導(dǎo)入css,js

模板繼承

快捷緩存(數(shù)據(jù)緩存) cache S
if($!('rows'))
{
$user = M('User');
$rows = $user -> select();
S('rows',$rows);
}
$this -> rows = S('rows');
$this -> display()
靜態(tài)緩存(模板緩存)
'HTML_CACHE_ON' = true,
'HTML_CACHE_RULES' = array(
'*' => array('{:module}/{:action}'),//所有模板所有頁面緩存
'*' => array('{$_SERVER.REQUEST_URL|md5}') //等于上面
)

session支持:
session('username','user1')
session('login','1')
session('isadmin','1')

刪除session三步:
刪除本地session數(shù)組
刪除服務(wù)器session文件
刪除客戶端cookie
session(null);
session('[destroy]');
cookie(session_name(),null);

中文驗(yàn)證碼:
需要有字體支持
字體文件放在ThinkPHP/Extend/Library/ORG/Util


表單提交: //自動(dòng)驗(yàn)證
$user = D('user');
if($user -> create()){
$user -> add();
}
else
{
echo $user->getError();
}

水印函數(shù):
import('ORG.Util.Image');
$img = new Image();
$path = './Public/Uploads/Images/';
$src = $path.'a.jpg';
$dst = $path.'loao.png';
$save = $path.'w_a.jpg';
$img -> water($str,$dst,$save);

圖片縮放:
thumb($image,$thumbname,$type='',$maxWidth=200,$maxHeight=50,$interlace=true);
$img -> thumb;

數(shù)據(jù)分頁:
$user = M('User');
import('ORG.Util.Page');
$count = $user -> count();
$length = 3;
$page = new Page($count,$length);
$this->show = $page -> show();
$this->rows = $user->order('id') -> limit($page -> firsRow,$length)->select();
$page->setConfig("theme","總計(jì)%totalRow%個(gè)用戶 %upPage% %%downPage");//這樣可以自己定制格式

文件上傳:
$up = new UploadFile();

轉(zhuǎn)載于:https://www.cnblogs.com/Duskcl/p/5037552.html

總結(jié)

以上是生活随笔為你收集整理的thinkphp笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91视频入口| 天海翼一区二区 | 双性尿奴穿贞c带憋尿 | 久久77777 | 日本黄页网站免费大全 | 中国黄色小视频 | 91视频在线免费观看 | 日韩小视频网站 | 国产aⅴ精品 | 久久久久无码国产精品一区李宗瑞 | 日韩在线免费 | 免费看a级片 | 制服丝袜av在线播放 | 91成人看| 国产精品果冻传媒潘 | 啪视频在线| 国产天堂av | 欧美成人免费观看视频 | av在线.com| 性感美女在线观看 | 不卡一区二区三区四区 | 99久久香蕉 | 欧美视频一区二区三区四区 | 免费一级欧美片在线播放 | 国产成人av在线播放 | 婷婷色五| 爱爱视频网站 | 老司机免费精品视频 | 欧美日韩激情视频在线观看 | 国产精品一线天粉嫩av | 亚洲欧美久久 | 性做久久久| 在线观看毛片av | www.在线观看网站 | 久久午夜无码鲁丝片 | 婷婷操| 欧美日韩一区二区在线播放 | 国产激情文学 | 日本免费黄视频 | 国产一伦一伦一伦 | 五月天狠狠干 | 精品蜜桃一区二区三区 | 成人免费网站黄 | 在线观看中文字幕2021 | 小小姑娘电影大全免费播放 | 一二三av | 亚洲熟乱 | 激情网综合 | 国产.com| 欧美3p在线观看 | 天堂草在线观看 | 亚洲国产成人综合 | 一级片一区 | 日韩欧美在线观看一区二区 | 激情超碰在线 | 日本少妇激情 | 国产精品久久久影院 | 91ts人妖另类精品系列 | 最好看的2018中文2019 | 日本艳妇 | 少女情窦初开的第4集在线观看 | 爱操综合 | 免费欧美黄色 | 男女做激情爱呻吟口述全过程 | 午夜精品久久久久久久91蜜桃 | 性欧美18—19sex性高清 | www.av.cn | www.日韩在线观看 | 日韩av一二三 | 亚洲一区二区三区四区在线观看 | 欧美日韩国产免费观看 | 九色tv| 日本在线有码 | 天天操,夜夜操 | 国产98在线 | 暖暖日本视频 | 欧美污视频在线观看 | 国产一区二区在线看 | 人人干97 | 不卡一二区 | 国产精品久久久久久免费 | 蜜臀av在线观看 | 丁香六月在线 | 男生尿隔着内裤呲出来视频 | 精品视频久久 | 蜜桃av免费看 | 91国模少妇一区二区三区 | 91丨porny丨国产入口 | 91调教打屁股xxxx网站 | 精品久久久久久久久中文字幕 | 波多野结衣99 | 亚洲精品天堂成人片av在线播放 | 久草手机在线视频 | 末发成年娇小性xxxxx | 国产不卡免费视频 | 国产精品一区二区精品 | 999国产精品亚洲77777 | 亚洲xxxx天美 | gay男互凵gay男同偷精 |