ホームページ バックエンド開発 PHPチュートリアル オープンカート分析_PHP チュートリアル

オープンカート分析_PHP チュートリアル

Jul 13, 2016 pm 05:54 PM
opencart 一般 分析する 原理 そして 成し遂げる 話し合う 研究

opencart を 2 日間学習した後、その実装原則の概要を作成し、皆さんと話し合います。


opencart は独自に開発されたアーキテクチャであり、その実装アイデアも MVC に基づいており、アーキテクチャのコアはシステム/エンジンの下にあり、いくつかのファイルが含まれています。

1):controller.php すべてのコントローラーの基本クラス

2): action.php アクションステアリング、つまりパス。たとえば、カタログの下のクラスControllerAccountAddressはアカウント/アドレス用です

3):front.php フロントエンドアクション実行ファイル。これはaction.phpに基づく操作であり、データをロードするaction.phpと同等であり、front.phpは実行を担当するアクションです。

4):loader.php これは、データベース、モデル、ライブラリの下のファイルを含む、関連するクラス ライブラリ ファイルをロードします。呼び出しメソッドは $this->load->library("ライブラリの下のファイル名 ") です。 D Model、$ this-& gt- & gt; などの他の参照loader.phpファイル

5):model.php このファイルはすべてのモデルの基本クラスであり、これ以上の説明は行いません。

6): registry.php このファイルの実装は Model.php と同じです。このクラス Registry は、index.php のスタート ページではシングルトン (Singleton) です。 まず、コンストラクタのパラメータとして使用するクラスの値を渡してクラスインスタンスを作成し、このクラスインスタンスを「レジストリ」に設定します

このレジストリは共有データ バスのようなもので、さまざまなモジュール/データを接続します。


System の下にいくつかのパブリック クラスがあるため、基本クラスとパブリック クラスはレジストリに登録されているindex.php を通じてロードされるため、必要なクラスとファイルをロードできます

var_dump($registry);exit; Index.php にブレークポイントを設定して出力された内容 (インターセプトされた部分) は次のとおりです。

オブジェクト(レジストリ)[1]
  プライベート 'データ' =>
    配列
      'ロード' =>
        オブジェクト(ローダー)[2]
          保護された「レジストリ」=>
            &オブジェクト(レジストリ)[1]
      '設定' =>
        オブジェクト(構成)[3]
          プライベート 'データ' =>
            配列
              ...
      'db' =>
        オブジェクト(DB)[4]
          プライベート 'ドライバー' =>
            オブジェクト(MySQL)[5]
              ...
      'url' =>
        オブジェクト(URL)[8]
          プライベート 'url' =>ヌル
          プライベート 'ssl' =>ヌル
          プライベート 'リライト' =>
            配列
              ...
      'ログ' =>
        オブジェクト(ログ)[9]
          プライベート 'ファイル名' =>文字列「error.txt」(長さ=9)
      'リクエスト' =>
        オブジェクト(リクエスト)[10]
          public 'get' =>
            配列
              ...
          公開「投稿」 =>
            配列
              ...
          パブリック 'Cookie' =>
            配列
              ...
          パブリック 'ファイル' =>
            配列
              ...
          パブリック 'サーバー' =>
            配列
              ...
          パブリック 'リクエスト' =>
            配列
              ...
      '応答' =>
        オブジェクト(応答)[11]
          プライベート 'ヘッダー' =>
            配列
print_r($registry->get('config')->get('account_module'));exit; これは印刷された個別のプロパティのコンテンツです

次の例による説明:

registry.php のインフォメーション下記:

最終クラス登録 {
プライベート $data = array();
パブリック関数 get($key) {
return (isset($this->data[$key]) ? $this->data[$key] : NULL);
}
パブリック関数セット($key, $value) {
$this->data[$key] = $value;
}

パブリック関数 has($key) {
     return isset($this->data[$key]);
   }
}

コントローラーのインフォメーションは下記(一部抜粋):

抽象クラス コントローラー {
保護された $registry;
保護された $id;
保護された $layout;
保護された $template;
protected $children = array();
protected $data = array();
保護された $output;

パブリック関数 __construct($registry) {
$this->registry = $registry;
}

パブリック関数 __get($key) {
return $this->registry->get($key);
}

パブリック関数 __set($key, $value) {
$this->registry->set($key, $value);
}
}

いくつかの変数を任意に宣言します:

$arr=array("カマキリ"=>"タスク","合肥"=>"安徽省");
$str="中国、安徽省合肥市";

クラスを宣言します:

クラスデータベース{
プライベート $xx='123456';
プライベート $data=array();
パブリック関数 get($key) {
Return (isset($this->data[$key]) ? $this->data[$key] : $key);
}

関数connect(){
echo '接続中です...';
}
}

//コントロールクラスを宣言します:

クラスControllerAccountFixはControllerを拡張します{
var $name;
var $age;
var $key='Opencat';
関数 __construct(){
$this->name='c';
$this->age='12';
}
関数 fix(){
echo $this->key.PHP_EOL;
}
}

//登録クラスを宣言する


$reg=新しいレジストリ();

このデータを登録して公開部分にしてください:

$reg->set("arr",$arr);
$reg->set("str",$str);
$reg->set("クラス",new ControllerAccountFix());
$reg->set("db",new db());


$controller = 新しいControllerAccountFix($reg);
if (is_callable(array($controller, 'fix'))) {
$action = call_user_func_array(array($controller, 'fix'), array('dddd'));
}


//上記のコードは Opencart を出力します。


コントロール クラスを書き換えます:

クラスControllerAccountFixはControllerを拡張します{
保護された $registry; www.2cto.com

関数 fix(){

echo $this->db->get('xx') //出力 123456

エコー }

}

http://www.bkjia.com/PHPjc/477963.html

tru​​ehttp://www.bkjia.com/PHPjc/477963.html技術記事 opencart を 2 日間勉強した後、その実装原則の概要を作成し、皆さんと話し合います。opencart は自社開発のアーキテクチャであり、その実装アイデアも MVC に基づいています...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Huawei 携帯電話にデュアル WeChat ログインを実装するにはどうすればよいですか? Huawei 携帯電話にデュアル WeChat ログインを実装するにはどうすればよいですか? Mar 24, 2024 am 11:27 AM

Huawei 携帯電話にデュアル WeChat ログインを実装するにはどうすればよいですか?ソーシャルメディアの台頭により、WeChatは人々の日常生活に欠かせないコミュニケーションツールの1つになりました。ただし、多くの人は、同じ携帯電話で同時に複数の WeChat アカウントにログインするという問題に遭遇する可能性があります。 Huawei 社の携帯電話ユーザーにとって、WeChat の二重ログインを実現することは難しくありませんが、この記事では Huawei 社の携帯電話で WeChat の二重ログインを実現する方法を紹介します。まず第一に、ファーウェイの携帯電話に付属するEMUIシステムは、デュアルアプリケーションを開くという非常に便利な機能を提供します。アプリケーションのデュアルオープン機能により、ユーザーは同時に

nohupの機能と原理の解析 nohupの機能と原理の解析 Mar 25, 2024 pm 03:24 PM

nohup の役割と原理の分析 Unix および Unix 系オペレーティング システムでは、nohup はバックグラウンドでコマンドを実行するためによく使用されるコマンドです。ユーザーが現在のセッションを終了したり、ターミナル ウィンドウを閉じたりしても、コマンドはまだ実行され続けています。この記事では、nohup コマンドの機能と原理を詳しく分析します。 1. nohup の役割: バックグラウンドでのコマンドの実行: nohup コマンドを使用すると、ターミナル セッションを終了するユーザーの影響を受けることなく、長時間実行されるコマンドをバックグラウンドで実行し続けることができます。これは実行する必要があります

PHP プログラミング ガイド: フィボナッチ数列を実装する方法 PHP プログラミング ガイド: フィボナッチ数列を実装する方法 Mar 20, 2024 pm 04:54 PM

プログラミング言語 PHP は、さまざまなプログラミング ロジックやアルゴリズムをサポートできる、Web 開発用の強力なツールです。その中でも、フィボナッチ数列の実装は、一般的で古典的なプログラミングの問題です。この記事では、PHP プログラミング言語を使用してフィボナッチ数列を実装する方法を、具体的なコード例を添付して紹介します。フィボナッチ数列は、次のように定義される数学的数列です。数列の最初と 2 番目の要素は 1 で、3 番目の要素以降、各要素の値は前の 2 つの要素の合計に等しくなります。シーケンスの最初のいくつかの要素

Huawei携帯電話にWeChatクローン機能を実装する方法 Huawei携帯電話にWeChatクローン機能を実装する方法 Mar 24, 2024 pm 06:03 PM

Huawei 携帯電話に WeChat クローン機能を実装する方法 ソーシャル ソフトウェアの人気と人々のプライバシーとセキュリティの重視に伴い、WeChat クローン機能は徐々に人々の注目を集めるようになりました。 WeChat クローン機能を使用すると、ユーザーは同じ携帯電話で複数の WeChat アカウントに同時にログインできるため、管理と使用が容易になります。 Huawei携帯電話にWeChatクローン機能を実装するのは難しくなく、次の手順に従うだけです。ステップ 1: 携帯電話システムのバージョンと WeChat のバージョンが要件を満たしていることを確認する まず、Huawei 携帯電話システムのバージョンと WeChat アプリが最新バージョンに更新されていることを確認します。

Golang がゲーム開発の可能性を可能にする方法をマスターする Golang がゲーム開発の可能性を可能にする方法をマスターする Mar 16, 2024 pm 12:57 PM

今日のソフトウェア開発分野では、効率的で簡潔かつ同時実行性の高いプログラミング言語として、Golang (Go 言語) が開発者にますます好まれています。豊富な標準ライブラリと効率的な同時実行機能により、ゲーム開発の分野で注目を集めています。この記事では、ゲーム開発に Golang を使用する方法を検討し、具体的なコード例を通じてその強力な可能性を示します。 1. ゲーム開発における Golang の利点 Golang は静的型付け言語として、大規模なゲーム システムの構築に使用されます。

DreamWeaver CMS のセカンダリディレクトリを開けない原因の分析 DreamWeaver CMS のセカンダリディレクトリを開けない原因の分析 Mar 13, 2024 pm 06:24 PM

タイトル: DreamWeaver CMS のセカンダリディレクトリを開けない原因と解決策の分析 Dreamweaver CMS (DedeCMS) は、さまざまな Web サイトの構築に広く使用されている強力なオープンソースのコンテンツ管理システムです。ただし、Web サイトの構築中に、セカンダリ ディレクトリを開けない状況が発生し、Web サイトの通常の動作に問題が発生することがあります。この記事では、セカンダリ ディレクトリを開けない考えられる理由を分析し、この問題を解決するための具体的なコード例を示します。 1. 考えられる原因分析: 疑似静的ルール構成の問題: 使用中

Astar ステーキングの原則、収入の解体、エアドロップ プロジェクトと戦略、および運営のナニー レベルの戦略 Astar ステーキングの原則、収入の解体、エアドロップ プロジェクトと戦略、および運営のナニー レベルの戦略 Jun 25, 2024 pm 07:09 PM

目次 Astar Dapp ステーキングの原則 ステーキング収益 潜在的なエアドロップ プロジェクトの解体: AlgemNeurolancheHealthreeAstar Degens DAOVeryLongSwap ステーキング戦略と運用 「AstarDapp ステーキング」は今年初めに V3 バージョンにアップグレードされ、ステーキング収益に多くの調整が加えられましたルール。現在、最初のステーキング サイクルが終了し、2 番目のステーキング サイクルの「投票」サブサイクルが始まったばかりです。 「追加報酬」特典を獲得するには、この重要な段階を把握する必要があります (6 月 26 日まで続く予定で、残りは 5 日未満です)。 Astarステーキング収入を詳しく説明します。

Go言語でのブロック化の実装方法とメリットを理解する Go言語でのブロック化の実装方法とメリットを理解する Mar 24, 2024 am 08:36 AM

Go 言語は、非常に強力な同時実行機能を備えたプログラミング言語であり、ゴルーチンの概念を使用して同時実行を実現し、ブロッキングに対処するための豊富なツールとメソッドも提供します。 Go 言語では、実装方法とブロックの利点は理解する必要がある重要なことです。この記事では、Go 言語でのブロックの実装方法とその利点を紹介し、読者の理解を深めるために具体的なコード例を示します。ブロックの実装方法 Go 言語では、チャネル、相互接続など、さまざまな方法でブロックを実装できます。

See all articles