国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 php框架 ThinkPHP ThinkPHP怎么導(dǎo)入第三方類庫

ThinkPHP怎么導(dǎo)入第三方類庫

Jun 03, 2023 pm 05:15 PM
thinkphp

  第三方類庫

  第三方類庫指除了ThinkPHP框架、應(yīng)用項(xiàng)目類庫之外的其他類庫,一般由第三方系統(tǒng)或產(chǎn)品提供,如Smarty、Zend等系統(tǒng)的類庫等。

  前面使用自動加載或import方法導(dǎo)入的類庫,ThinkPHP約定是以.class.php為后綴的,非這類的后綴,需要通過import的參數(shù)來控制。

  但對第三類庫,由于不會有此約定,其后綴只能認(rèn)為是php。為了方便的引入其他框架和系統(tǒng)的類庫,ThinkPHP特意提供了導(dǎo)入第三方類庫的功能。第三方類庫統(tǒng)一放置在ThinkPHP系統(tǒng)目錄/Vendor下面,并且使用vendor方法導(dǎo)入。

  vendor方法

  語法:

  boolenvendor(class,baseUrl,ext)

  參數(shù)說明:

  參數(shù)說明

  class必須,表示要導(dǎo)入的類庫,采用命名空間的方式。

  baseUrl可選,表示導(dǎo)入的基礎(chǔ)路徑,省略的話系統(tǒng)采用ThinkPHP系統(tǒng)目錄/Vendor目錄。

  ext可選,表示導(dǎo)入的類庫后綴,默認(rèn)是.php。

  與import方法的區(qū)別在于,vendor方法默認(rèn)的導(dǎo)入路徑為ThinkPHP系統(tǒng)目錄/Vendor目錄,默認(rèn)后綴為.php。

  個(gè)人經(jīng)驗(yàn)分享:

  當(dāng)我們想在ThinkPHP中引入第三方擴(kuò)展,而第三方擴(kuò)展又沒有按照ThinkPHP的規(guī)范在編寫的時(shí)候時(shí),就需要將第三方擴(kuò)展放置到Library/Vendor目錄下,當(dāng)然,這是針對ThinkPHP3.2而言,低版本則根據(jù)情況來看了。

  然后需要在Controller或function中使用第三方擴(kuò)展時(shí),就可以直接使用vendor()方法來進(jìn)行引用了。

  第三方類庫目錄結(jié)構(gòu):

  在function函數(shù)中使用:

  第一種方法:

  Vendor('Phpqrcode.phpqrcode');

  復(fù)制代碼

  復(fù)制代碼

  /**

  *生成二維碼

  *@paramstring$urlurl連接

  *@paraminteger$size尺寸純數(shù)字

  */

  functionqrcode($url,$size=4){

  Vendor('Phpqrcode.phpqrcode');

  if(strpos($url,'http')===false){

  $url='http://'.$url;

  }

  QRcode::png($url,false,QR_ECLEVEL_L,$size,2,false,0xFFFFFF,0x000000);

  }

  復(fù)制代碼

  復(fù)制代碼

  第二種方法:

  require'./ThinkPHP/Library/Org/Nx/class.phpmailer.php';

  require'./ThinkPHP/Library/Org/Nx/class.smtp.php';

  復(fù)制代碼

  復(fù)制代碼

  /**

  *發(fā)送郵件

  *@paramstring$address需要發(fā)送的郵箱地址發(fā)送給多個(gè)地址需要寫成數(shù)組形式

  *@paramstring$subject標(biāo)題

  *@paramstring$content內(nèi)容

  *@returnboolean是否成功

  */

  functionsend_email($address,$subject,$content){

  $email_smtp=C('EMAIL_SMTP');

  $email_username=C('EMAIL_USERNAME');

  $email_password=C('EMAIL_PASSWORD');

  $email_from_name=C('EMAIL_FROM_NAME');

  if(empty($email_smtp)||empty($email_username)||empty($email_password)||empty($email_from_name)){

  returnarray("error"=>1,"message"=>'郵箱配置不完整');

  }

  require'./ThinkPHP/Library/Org/Nx/class.phpmailer.php';

  require'./ThinkPHP/Library/Org/Nx/class.smtp.php';

  $phpmailer=new\Phpmailer();

  //設(shè)置PHPMailer使用SMTP服務(wù)器發(fā)送Email

  $phpmailer->IsSMTP();

  //設(shè)置為html格式

  $phpmailer->IsHTML(true);

  //設(shè)置郵件的字符編碼'

  $phpmailer->CharSet='UTF-8';

  //設(shè)置SMTP服務(wù)器。

  $phpmailer->Host=$email_smtp;

  //設(shè)置為"需要驗(yàn)證"

  $phpmailer->SMTPAuth=true;

  //設(shè)置用戶名

  $phpmailer->Username=$email_username;

  //設(shè)置密碼

  $phpmailer->Password=$email_password;

  //設(shè)置郵件頭的From字段。

  $phpmailer->From=$email_username;

  //設(shè)置發(fā)件人名字

  $phpmailer->FromName=$email_from_name;

  //添加收件人地址,可以多次使用來添加多個(gè)收件人

  if(is_array($address)){

  foreach($addressas$addressv){

  $phpmailer->AddAddress($addressv);

  }

  }else{

  $phpmailer->AddAddress($address);

  }

  //設(shè)置郵件標(biāo)題

  $phpmailer->Subject=$subject;

  //設(shè)置郵件正文

  $phpmailer->Body=$content;

  //發(fā)送郵件。

  if(!$phpmailer->Send()){

  $phpmailererror=$phpmailer->ErrorInfo;

  returnarray("error"=>1,"message"=>$phpmailererror);

  }else{

  returnarray("error"=>0);

  }

  }

  復(fù)制代碼

  復(fù)制代碼

  第三種方法:

  支付寶類庫目錄結(jié)構(gòu)

  vendor('Alipay.AlipaySubmit','','.class.php');

  注意說明:Vendor加載的默認(rèn)后綴是.php的

  參數(shù)一:必須,表示要導(dǎo)入的類庫,采用命名空間的方式

  參數(shù)二:可選,表示導(dǎo)入的基礎(chǔ)路徑,省略的話系統(tǒng)采用ThinkPHP系統(tǒng)目錄/Vendor目錄。

  參數(shù)三:可選,表示導(dǎo)入的類庫后綴,默認(rèn)是.php。

  支付寶第三方案例代碼:

  復(fù)制代碼

  復(fù)制代碼

  /**

  *跳向支付寶付款

  *@paramarray$order訂單數(shù)據(jù)必須包含out_trade_no(訂單號)、price(訂單金額)、subject(商品名稱標(biāo)題)

  */

  functionalipay($order){

  vendor('Alipay.AlipaySubmit','','.class.php');

  //獲取配置

  $config=C('ALIPAY_CONFIG');

  $data=array(

  "_input_charset"=>$config['input_charset'],//編碼格式

  "logistics_fee"=>"0.00",//物流費(fèi)用

  "logistics_payment"=>"SELLER_PAY",//物流支付方式SELLER_PAY(賣家承擔(dān)運(yùn)費(fèi))、BUYER_PAY(買家承擔(dān)運(yùn)費(fèi))

  "logistics_type"=>"EXPRESS",//物流類型EXPRESS(快遞)、POST(平郵)、EMS(EMS)

  "notify_url"=>$config['notify_url'],//異步接收支付狀態(tài)通知的鏈接

  "out_trade_no"=>$order['out_trade_no'],//訂單號

  "partner"=>$config['partner'],//partner從支付寶商戶版?zhèn)€人中心獲取

  "payment_type"=>"1",//支付類型對應(yīng)請求時(shí)的payment_type參數(shù),原樣返回。固定設(shè)置為1即可

  "price"=>$order['price'],//訂單價(jià)格單位為元

  //"price"=>0.01,////調(diào)價(jià)用于測試

  "quantity"=>"1",//price、quantity能代替total_fee。即存在total_fee,就不能存在price和quantity;存在price、quantity,就不能存在total_fee。(沒繞明白;好吧;那無視這個(gè)參數(shù)即可)

  "receive_address"=>'1',//收貨人地址即時(shí)到賬方式無視此參數(shù)即可

  "receive_mobile"=>'1',//收貨人手機(jī)號碼即時(shí)到賬方式無視即可

  "receive_name"=>'1',//收貨人姓名即時(shí)到賬方式無視即可

  "receive_zip"=>'1',//收貨人郵編即時(shí)到賬方式無視即可

  "return_url"=>$config['return_url'],//頁面跳轉(zhuǎn)同步通知頁面路徑支付寶處理完請求后,當(dāng)前頁面自動跳轉(zhuǎn)到商戶網(wǎng)站里指定頁面的http路徑。

  "seller_email"=>$config['seller_email'],//email從支付寶商戶版?zhèn)€人中心獲取

  "service"=>"create_direct_pay_by_user",//接口名稱固定設(shè)置為create_direct_pay_by_user

  "show_url"=>$config['show_url'],//商品展示網(wǎng)址,收銀臺頁面上,商品展示的超鏈接。

  "subject"=>$order['subject']//商品名稱商品的標(biāo)題/交易標(biāo)題/訂單標(biāo)題/訂單關(guān)鍵字等

  );

  $alipay=new\AlipaySubmit($config);

  $new=$alipay->buildRequestPara($data);

  $go_pay=$alipay->buildRequestForm($new,'get','支付');

  echo$go_pay;

  }

  復(fù)制代碼

  復(fù)制代碼

  不過當(dāng)我將PHPMailer放在Vendor目錄下后,在本機(jī)運(yùn)行得好好得,最近將程序上傳到服務(wù)器上時(shí),直接提示Class‘PHPMailer’notfound然后又在本機(jī)運(yùn)行,還是正確!通過前面這片博客可以知道,我是通過vendor('PHPMailer.class#PHPMailer');

  這行代碼將PHPMailer引入的。既然提示找不到PHPMailer類,說明沒有被正確引入。這是為什么呢?

  就粗略看了一下vendor()方法的源碼,這才發(fā)現(xiàn)其實(shí)vendor()方法也就是對import()方法進(jìn)行了一次參數(shù)組裝,然后還是交給了import()方法處理。查看import()方法的源碼又發(fā)現(xiàn),在import()方法中,對于上面?zhèn)魅雲(yún)?shù)的解析其實(shí)就是將’.’替換成’/’,將’#’替換成了’.’,baseurl則由vendor()方法自動補(bǔ)充上了,指向Vendor目錄。所以上面vendor()方法中的參數(shù)最終還是被解析成了如下目錄:

  Library/Vendor/PHPMailer/class.PHPMailer.php

  而PHPMailer的入口文件的實(shí)際目錄地址為:

  Library/Vendor/phpmailer/class.phpmailer.php

  內(nèi)容都一樣的嘛!不過我用的是Linux的服務(wù)器,所以對大小寫是嚴(yán)格區(qū)分的,這樣當(dāng)然不能成功導(dǎo)入這個(gè)類。而解決辦法就是將vendor()引入改為:

  vendor(‘phpmailer.class#phpmailer’)

  另外對于PHPMailer使用時(shí)還要注意一點(diǎn),PHPMailer如果使用SMTP方式發(fā)送郵件,需要PHP對fsockopen的支持,所以我們需要修改php.ini中disable_functions中將fscokopen刪除,否則會出現(xiàn)運(yùn)行錯(cuò)誤:

  fsockopen()hasbeendisabled

  通過PHPMailer的ErrorInfo屬性可以獲取到!

以上是ThinkPHP怎么導(dǎo)入第三方類庫的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1600
29
PHP教程
1502
276
thinkphp項(xiàng)目怎么運(yùn)行 thinkphp項(xiàng)目怎么運(yùn)行 Apr 09, 2024 pm 05:33 PM

運(yùn)行 ThinkPHP 項(xiàng)目需要:安裝 Composer;使用 Composer 創(chuàng)建項(xiàng)目;進(jìn)入項(xiàng)目目錄,執(zhí)行 php bin/console serve;訪問 http://localhost:8000 查看歡迎頁面。

thinkphp有幾個(gè)版本 thinkphp有幾個(gè)版本 Apr 09, 2024 pm 06:09 PM

ThinkPHP 擁有多個(gè)版本,針對不同 PHP 版本而設(shè)計(jì)。主要版本包括 3.2、5.0、5.1 和 6.0,而次要版本用于修復(fù) bug 和提供新功能。當(dāng)前最新穩(wěn)定版本為 ThinkPHP 6.0.16。在選擇版本時(shí),需考慮 PHP 版本、功能需求和社區(qū)支持。建議使用最新穩(wěn)定版本以獲得最佳性能和支持。

thinkphp怎么運(yùn)行 thinkphp怎么運(yùn)行 Apr 09, 2024 pm 05:39 PM

ThinkPHP Framework 的本地運(yùn)行步驟:下載并解壓 ThinkPHP Framework 到本地目錄。創(chuàng)建虛擬主機(jī)(可選),指向 ThinkPHP 根目錄。配置數(shù)據(jù)庫連接參數(shù)。啟動 Web 服務(wù)器。初始化 ThinkPHP 應(yīng)用程序。訪問 ThinkPHP 應(yīng)用程序 URL 運(yùn)行。

laravel和thinkphp哪個(gè)好 laravel和thinkphp哪個(gè)好 Apr 09, 2024 pm 03:18 PM

Laravel 和 ThinkPHP 框架的性能比較:ThinkPHP 性能通常優(yōu)于 Laravel,專注于優(yōu)化和緩存。Laravel 性能良好,但對于復(fù)雜應(yīng)用程序,ThinkPHP 可能更適合。

thinkphp怎么安裝 thinkphp怎么安裝 Apr 09, 2024 pm 05:42 PM

ThinkPHP 安裝步驟:準(zhǔn)備 PHP、Composer、MySQL 環(huán)境。使用 Composer 創(chuàng)建項(xiàng)目。安裝 ThinkPHP 框架及依賴項(xiàng)。配置數(shù)據(jù)庫連接。生成應(yīng)用代碼。啟動應(yīng)用并訪問 http://localhost:8000。

thinkphp性能怎么樣 thinkphp性能怎么樣 Apr 09, 2024 pm 05:24 PM

ThinkPHP 是一款高性能的 PHP 框架,具備緩存機(jī)制、代碼優(yōu)化、并行處理和數(shù)據(jù)庫優(yōu)化等優(yōu)勢。官方性能測試顯示,它每秒可處理超過 10,000 個(gè)請求,實(shí)際應(yīng)用中被廣泛用于京東商城、攜程網(wǎng)等大型網(wǎng)站和企業(yè)系統(tǒng)。

開發(fā)建議:如何利用ThinkPHP框架進(jìn)行API開發(fā) 開發(fā)建議:如何利用ThinkPHP框架進(jìn)行API開發(fā) Nov 22, 2023 pm 05:18 PM

開發(fā)建議:如何利用ThinkPHP框架進(jìn)行API開發(fā)隨著互聯(lián)網(wǎng)的不斷發(fā)展,API(ApplicationProgrammingInterface)的重要性也日益凸顯。API是不同應(yīng)用程序之間進(jìn)行通信的橋梁,它可以實(shí)現(xiàn)數(shù)據(jù)共享、功能調(diào)用等操作,為開發(fā)者提供了相對簡單和快速的開發(fā)方式。而ThinkPHP框架作為一款優(yōu)秀的PHP開發(fā)框架,具有高效、可擴(kuò)展和易用

開發(fā)建議:如何利用ThinkPHP框架實(shí)現(xiàn)異步任務(wù) 開發(fā)建議:如何利用ThinkPHP框架實(shí)現(xiàn)異步任務(wù) Nov 22, 2023 pm 12:01 PM

《開發(fā)建議:如何利用ThinkPHP框架實(shí)現(xiàn)異步任務(wù)》隨著互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,Web應(yīng)用程序?qū)τ谔幚泶罅坎l(fā)請求和復(fù)雜業(yè)務(wù)邏輯的需求也越來越高。為了提高系統(tǒng)的性能和用戶體驗(yàn),開發(fā)人員常常會考慮利用異步任務(wù)來執(zhí)行一些耗時(shí)操作,比如發(fā)送郵件、處理文件上傳、生成報(bào)表等。在PHP領(lǐng)域,ThinkPHP框架作為一款流行的開發(fā)框架,提供了一些便捷的方式來實(shí)現(xiàn)異步任務(wù)。

See all articles