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

目次
自己の PHP 架臺の注意(二),架橋 php 架臺の注意
續(xù)言
回調(diào)函數(shù)
VIEW層和ob函數(shù)
類__URL__常量和全局類
用單例模式定義數(shù)據(jù)庫連接基類
DB類的sql查詢函數(shù)
后續(xù)
ホームページ バックエンド開発 PHPチュートリアル 獨自の PHP フレームワークの構(gòu)築経験 (2)、PHP フレームワークの構(gòu)築経験_PHP チュートリアル

獨自の PHP フレームワークの構(gòu)築経験 (2)、PHP フレームワークの構(gòu)築経験_PHP チュートリアル

Jul 12, 2016 am 08:55 AM
php

自己の PHP 架臺の注意(二),架橋 php 架臺の注意

續(xù)言

對于本次更新,我想說:

  • 本框架由本人挑時間完善,而我還不是PHP大神級的人物,所以框架漏洞難免,求大神們指出。
  • 本框架的知識點應(yīng)用都會寫在博客里,大家有什么異議的可以一起討論,也希望看博客的也能學(xué)習(xí)到它們。
  • 本次更新,更新了函數(shù)規(guī)范上的一些問題,如將函數(shù)盡量的獨立化,每一個函數(shù)盡量只單獨做好一件事情,盡量減少函數(shù)依賴。還對框架的整體優(yōu)化了一下,添加了SQ全局類,用以處理全局函數(shù),變量。

再次貼出GITHUB地址:Sqier框架GITHUB地址


回調(diào)函數(shù)

替換了很low的類名拼裝實例化,然后拼裝方法名的用法,使用PHP的回調(diào)函數(shù)方式:

原代碼:

<code>$controller_name = 'Controller\\' . self::$c_name;
$action_name = self::$a_name . 'Action';
$controller = new $controller_name();
$controller->$action_name();
</code>

修改后代碼

<code>    $controller_name = 'Controller\\' . self::$c_name;
    $controller = new $controller_name();
    call_user_func([
        $controller,
        self::$a_name . 'Action'
    ]);
</code>

這里介紹一下PHP的函數(shù)回調(diào)應(yīng)用方式:call_user_func和call_user_func_array:

<p>call_user_func ( callback $function [, mixed $parameter [, mixed $... ]] )</p>
<p>調(diào)用第一個參數(shù)所提供的用戶自定義的函數(shù)。</p>
<p>返回值:返回調(diào)用函數(shù)的結(jié)果,或FALSE。</p>

call_user_func_array()的用法跟call_user_func類似,只不過傳入的參數(shù)params整體為一個數(shù)組。

另外,call_user_func系列函數(shù)還可以傳入在第一個參數(shù)里傳入匿名參數(shù),可以很方便的回調(diào)某些事件,這些特性在復(fù)雜的框架里應(yīng)用也十分廣泛,如yii2的事件機制里回調(diào)函數(shù)的使用就是基于此。


VIEW層和ob函數(shù)

框架在controller的基類中定義了render方法來渲染頁面,它會調(diào)用類VIEW的靜態(tài)函數(shù)來分析加載對應(yīng)頁面的模板。

<code>public static function display($data, $view_file) {

    if(is_array($data)) {
        extract($data);//extract函數(shù)解析$data數(shù)組中的變量
    }else {
        //拋出變量類型異常
    }

    ob_start();
    ob_implicit_flush(0);
    include self::checkTemplate($view_file);//自定義checkTemplate函數(shù),分析檢查對應(yīng)的函數(shù)模板,正常返回路徑
    $content = ob_get_clean();

    echo $content;
}
</code>

這里重點說一下ob(output buffering)系列函數(shù),其作用引用簡明代魔法的ob作用介紹:

  • 防止在瀏覽器有輸出之后再使用setcookie,或者header,session_start函數(shù)造成的錯誤。其實這樣的用法少用為好,養(yǎng)成良好的代碼習(xí)慣。
  • 捕捉對一些不可獲取的函數(shù)的輸出,比如phpinfo會輸出一大堆的HTML,但是我們無法用一個變量例如$info=phpinfo();來捕捉,這時候ob就管用了。
  • 對輸出的內(nèi)容進行處理,例如進行g(shù)zip壓縮,例如進行簡繁轉(zhuǎn)換,例如進行一些字符串替換。
  • 生成靜態(tài)文件,其實就是捕捉整頁的輸出,然后存成文件,經(jīng)常在生成HTML,或者整頁緩存中使用。

它在ob_start()函數(shù)執(zhí)行后,打開緩沖區(qū),將后面的輸出內(nèi)容裝進系統(tǒng)的緩沖區(qū),ob_implicit_flush(0)函數(shù)來關(guān)閉絕對刷送(echo等),最后使用ob_get_clean()函數(shù)將緩沖區(qū)的內(nèi)容取出來。


類__URL__常量和全局類

TP里的__URL__等全局常量用著很方便,可以很簡單的實現(xiàn)跳轉(zhuǎn)等操作,而定義它的函數(shù)createUrl函數(shù)我又想重用,于是借鑒YII的全局類定義方法:

定義基類及詳細方法(以后的全局方法會寫在這里)

<code>class BaseSqier{
    //方法根據(jù)傳入的$info信息,和當(dāng)前URL_MODE解析返回URL字符串
    public static function createUrl($info = '') {
        $url_info = explode('/', strtolower($info));
        $controller = isset($url_info[1]) ? $url_info[0] : strtolower(CONTROLLER);
        $action = isset($url_info[1]) ? $url_info[1] : $url_info[0];
        switch(URL_MODE){
            case URL_COMMON:
                return "/index.php?r=" . $controller . '/' . $action;
            case URL_REWRITE:
                return '/' .$controller . '/' . $action;
        }
    }
 }
</code>

在啟動文件中定義類并繼承基類;

<code>require_once SQ_PATH.'BaseSqier.php';
class SQ extends BaseSqier{
}
</code>

在全局內(nèi)都可以直接使用SQ::createUrl()方法來創(chuàng)建URL了。這樣,定義__URL__常量就很輕松了。


用單例模式定義數(shù)據(jù)庫連接基類

<code>class Db {
    protected static $_instance;
    public static function getInstance() {
        if(!(self::$_instance instanceof self)) {
            self::$_instance = new self();
        }
        return self::$_instance;
    }

    private function __construct() {
        $link = new \mysqli(DB_HOST, DB_USER, DB_PWD, DB_NAME) or die("連接數(shù)據(jù)庫失敗,請檢查數(shù)據(jù)庫配置信息!");
        $link->query('set names utf8');
    }
    public function __clone() {
        return self::getInstance();
    }
}
</code>

使用單例模式的核心是:

  • 私有化構(gòu)造函數(shù),使無法用new來創(chuàng)建對象,也防止子類繼承它并改寫其構(gòu)造函數(shù);
  • 用靜態(tài)變量存放當(dāng)前對象,定義靜態(tài)方法來返回對象,如對象還未實例化,實例化一個,存入靜態(tài)變量并返回。
  • 構(gòu)造其__clone魔術(shù)方法,防止clone出一個新的對象;

DB類的sql查詢函數(shù)

DB查詢函數(shù)是一個很復(fù)雜的部分,它是一個自成體系的東西,像TP和YII的查詢方法都有其獨特的地方。我這里暫時先借用TP的MODEL基類,有時間再慢慢補這個。

嗯,介紹一下像TP的查詢里的方法聯(lián)查的實現(xiàn),其訣竅在于,在每個聯(lián)查方法的最后都用 return this 來返回已處理過的查詢對象。


后續(xù)

yii2里的數(shù)據(jù)表和model類屬性之間的映射很酷(雖然被深坑過), 前面一直避開的模塊(module,我可以想像得到把它也添加到URI時解析的麻煩)有時間考慮一下。

邊寫邊優(yōu)化。

さて、続きます... ちなみに、あなたの個人ウェブサイトを宣伝してください: www.alwayscoding.cn 私の連絡(luò)先情報は掲示板ページの右側(cè)にあります。質(zhì)問がある場合は、そこで連絡(luò)できます。

www.bkjia.comtru??ehttp://www.bkjia.com/PHPjc/1116381.html技術(shù)記事獨自の PHP フレームワーク構(gòu)築體験 (2)、PHP フレームワーク構(gòu)築體験の続きです。 今回の更新では、このフレームワークは私自身で完成させたものであり、私はまだ PHP マスターではないので... と言いたいと思います。
このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPはAIインテリジェント音聲アシスタントPHP音聲相互作用システムの構(gòu)築を呼び出す PHPはAIインテリジェント音聲アシスタントPHP音聲相互作用システムの構(gòu)築を呼び出す Jul 25, 2025 pm 08:45 PM

ユーザー音聲入力がキャプチャされ、フロントエンドJavaScriptのMediareCorder APIを介してPHPバックエンドに送信されます。 2。PHPはオーディオを一時ファイルとして保存し、STTAPI(GoogleやBaiduの音聲認識など)を呼び出してテキストに変換します。 3。PHPは、テキストをAIサービス(Openaigptなど)に送信して、インテリジェントな返信を取得します。 4。PHPは、TTSAPI(BaiduやGoogle Voice Synthesisなど)を呼び出して音聲ファイルに返信します。 5。PHPは、音聲ファイルをフロントエンドに戻し、相互作用を完了します。プロセス全體は、すべてのリンク間のシームレスな接続を確保するためにPHPによって支配されています。

PHPを使用してソーシャル共有機能を構(gòu)築する方法PHP共有インターフェイス統(tǒng)合プラクティス PHPを使用してソーシャル共有機能を構(gòu)築する方法PHP共有インターフェイス統(tǒng)合プラクティス Jul 25, 2025 pm 08:51 PM

PHPでソーシャル共有機能を構(gòu)築するコア方法は、各プラットフォームの要件を満たす共有リンクを動的に生成することです。 1.最初に現(xiàn)在のページまたは指定されたURLおよび記事情報を取得します。 2。urlencodeを使用してパラメーターをエンコードします。 3.各プラットフォームのプロトコルに従って、共有リンクをスプライスおよび生成します。 4.ユーザーがクリックして共有できるように、フロントエンドにリンクを表示します。 5.ページ上のOGタグを動的に生成して、コンテンツディスプレイの共有を最適化します。 6. XSS攻撃を防ぐために、必ずユーザーの入力を逃がしてください。この方法は、複雑な認証を必要とせず、メンテナンスコストが低く、ほとんどのコンテンツ共有ニーズに適しています。

AIと組み合わせてPHPを使用してテキストエラー修正PHP構(gòu)文検出と最適化を?qū)g現(xiàn)する方法 AIと組み合わせてPHPを使用してテキストエラー修正PHP構(gòu)文検出と最適化を?qū)g現(xiàn)する方法 Jul 25, 2025 pm 08:57 PM

AIによるテキストエラーの修正と構(gòu)文最適化を?qū)g現(xiàn)するには、次の手順に従う必要があります。1。Baidu、Tencent API、またはオープンソースNLPライブラリなどの適切なAIモデルまたはAPIを選択します。 2。PHPのカールまたはガズルを介してAPIを呼び出し、返品結(jié)果を処理します。 3.アプリケーションにエラー修正情報を表示し、ユーザーが採用するかどうかを選択できるようにします。 4.構(gòu)文の検出とコードの最適化には、PHP-LとPHP_CODESNIFFERを使用します。 5.フィードバックを継続的に収集し、モデルまたはルールを更新して効果を改善します。 AIAPIを選択するときは、PHPの精度、応答速度、価格、サポートの評価に焦點を當(dāng)てます。コードの最適化は、PSR仕様に従い、キャッシュを合理的に使用し、円形クエリを避け、定期的にコードを確認し、Xを使用する必要があります。

PHPは、PHPコメントレビューとアンチブラシ戦略を収益化するためのブログコメントシステムを作成します PHPは、PHPコメントレビューとアンチブラシ戦略を収益化するためのブログコメントシステムを作成します Jul 25, 2025 pm 08:27 PM

1.コメントシステムの商業(yè)的価値を最大化するには、ネイティブ広告の正確な配信、ユーザー有料の付加価値サービス(寫真のアップロード、トップアップコメントなど)、コメントの品質(zhì)に基づくインセンティブメカニズム、コンプライアンス匿名データ洞察の収益化に影響を與える必要があります。 2。監(jiān)査戦略では、コンテンツの品質(zhì)評価によって補足されたコンテンツの階層的露出を?qū)g現(xiàn)するために、コメントの品質(zhì)評価によって補足された、監(jiān)査前の動的キーワードフィルタリングとユーザー報告メカニズムの組み合わせを採用する必要があります。 3.アンチブラシには、多層防御の構(gòu)築が必要です。RecaptChav3センサーのレス検証、ハニーポットハニーポットフィールド認識ロボット、IPおよびタイムスタンプの頻度制限により、水の散水が防止され、コンテンツパターン認識が疑わしいコメントを示し、攻撃を継続的に繰り返します。

PHPを使用してAIを組み合わせて畫像を生成する方法。 PHPは自動的にアートワークを生成します PHPを使用してAIを組み合わせて畫像を生成する方法。 PHPは自動的にアートワークを生成します Jul 25, 2025 pm 07:21 PM

PHPは、AI畫像処理を直接実行するのではなく、APIを介して統(tǒng)合します。これは、コンピューティング集約型タスクではなくWeb開発に優(yōu)れているためです。 API統(tǒng)合は、専門的な分業(yè)を達成し、コストを削減し、効率を向上させることができます。 2。主要なテクノロジーの統(tǒng)合には、GuzzleまたはCurlを使用してHTTPリクエスト、JSONデータエンコードとデコード、APIキーセキュリティ認証、非同期キュー処理時間を処理するタスク、堅牢なエラー処理と再試行メカニズム、畫像ストレージとディスプレイが含まれます。 3.一般的な課題には、APIコストが制御不能、制御不能な生成結(jié)果、ユーザーエクスペリエンスの低さ、セキュリティリスク、困難なデータ管理が含まれます。対応戦略は、ユーザーの割り當(dāng)てとキャッシュを設(shè)定し、プロップガイダンスとマルチピクチャの選択、非同期通知と進捗プロンプト、主要な環(huán)境変數(shù)ストレージとコンテンツ監(jiān)査、クラウドストレージを提供します。

PHPは、商品在庫管理と収益化PHP在庫の同期とアラームメカニズムを?qū)g現(xiàn)します PHPは、商品在庫管理と収益化PHP在庫の同期とアラームメカニズムを?qū)g現(xiàn)します Jul 25, 2025 pm 08:30 PM

PHPは、データベーストランザクションと任意の行ロックを通じて在庫控除原子性を保証し、高い同時過剰販売を防ぎます。 2。マルチプラットフォームの在庫の一貫性は、集中管理とイベント駆動型の同期に依存し、API/Webhook通知とメッセージキューを組み合わせて、信頼できるデータ送信を確保します。 3.アラームメカニズムは、さまざまなシナリオで低在庫、ゼロ/ネガティブインベントリ、販売、補充サイクル、異常な変動戦略を設(shè)定し、緊急性に応じてDingTalk、SMS、または電子メールの責(zé)任者を選択する必要があり、アラーム情報は完全かつ明確にしてビジネス適応と迅速な対応を?qū)g現(xiàn)する必要があります。

ランプスタックを超えて:現(xiàn)代のエンタープライズアーキテクチャにおけるPHPの役割 ランプスタックを超えて:現(xiàn)代のエンタープライズアーキテクチャにおけるPHPの役割 Jul 27, 2025 am 04:31 AM

phpisStillRelevantinModernenterpriseenvironments.1.modernphp(7.xand8.x)は、パフォーマンスゲイン、stricttyping、jit compilation、andmodernsyntaxを提供し、scaleApplications.2.phpintegrateSeffeCtiveTiveliveTiveliveTiveliveTiveTiveTiveliveTiveStures、

PHP統(tǒng)合AI音聲認識と翻訳者PHP會議記録自動生成ソリューション PHP統(tǒng)合AI音聲認識と翻訳者PHP會議記録自動生成ソリューション Jul 25, 2025 pm 07:06 PM

適切なAI音聲認識サービスを選択し、PHPSDKを統(tǒng)合します。 2。PHPを使用してFFMPEGを呼び出して、録音をAPIrequiredフォーマット(WAVなど)に変換します。 3.ファイルをクラウドストレージにアップロードし、APIの非同期認識を呼び出します。 4. JSONの結(jié)果を分析し、NLPテクノロジーを使用してテキストを整理します。 5.単語またはマークダウンドキュメントを生成して、會議記録の自動化を完了します。プロセス全體では、データの暗號化、アクセス制御、コンプライアンスを確保して、プライバシーとセキュリティを確保する必要があります。

See all articles