ホームページ  >  記事  >  バックエンド開発  >  cmsの二次開発に最適なものを詳しく紹介します。

cmsの二次開発に最適なものを詳しく紹介します。

黄舟
黄舟オリジナル
2017-10-21 09:35:016016ブラウズ

◆二次開発

二次開発とは

二次開発とは、簡単に言うと、既存のソフトウェアをカスタマイズ・修正し、機能拡張を行い、希望する機能や効果を実現することを指します。元のシステムのカーネルは変更しないでください。

なぜ二次開発なのか?

情報技術の継続的な発展に伴い、IT業界では一連の優れたオープンソース作品が登場しており、その作者は個人、プロジェクトチーム、または

ソフトウェア会社のいずれかです。これらの優れたオープンソースソフトウェアを選択・適用し、それを基にビジネスニーズに合わせた二次開発を行うことで、企業の情報コスト(時間コストや開発コスト)を節約できるだけでなく、技術的な保証も実現します。これは私たちがよく聞く言葉です。巨人の肩の上に立つと、より遠くまで見えるでしょう。したがって、多くの国内企業は二次開発人材を必要としています。

二次開発を行うには?

まず、このオープンソース製品で使用されている言語の基礎を持っている必要があります コードを理解できることが最も基本です。

第 2 に、このオープンソース製品の機能と使用法に精通している必要があります。このオープンソース製品に精通しているため、要件、何を変更したいのか、システムに付属しているもの、およびその方法がわかります。それを変える。 第三に、このオープンソース製品のデータ構造、コード構造、システム フレームワーク構造、何がコアであり、どこに補助機能があるのか​​をよく理解しておく必要があります。

簡単に言うと、データベース、コードロジック、ファイルディレクトリに精通していることを意味します。

4番目に、ニーズに応じて、オープンソース製品のコアを使用して、ニーズに合わせてシステムを拡張および変更します。PHPのオープンソース

製品の二次開発のための基本的な要件を紹介します。

最初に、基本的なもの。要件: HTML (十分に精通している必要があります)、PHP (コードを理解して、メッセージ ボードや小規模 CMS などのいくつかの小規模システムを作成できる)、

Mysql (少なくとも 1 つのデータベースを知っている)、JavaScript (いくつかのデータベースを理解して作成できる)小規模システム) いくつかの既存のコードを変更する)、p+Css (インターフェースを調整し、CSS

がどのように使用されるかを理解できる)

2 番目に、Dedecms などのオープンソース製品の使用方法を知る必要があります。ログインと新しい列の作成方法、記事の追加方法、テンプレート タグの使用方法、モデルの概念と使用法、その他の機能について説明します

第三に、このオープン ソース製品のデータベース構造をよく理解しておく必要があります。また、データベース クラスの使用方法、一般的に使用されるセキュリティ フィルタリングの実行方法、テンプレート エンジンの使用方法、その他のコア コンテンツなど、内部のコア ファイルの内容も理解します。また、このオープン ソース製品のディレクトリ構造を知る必要があります。つまり、テンプレートが配置される場所、コントロールが配置される場所、スタイルが配置される場所などを知る必要があります。

4 つ目は、自分のニーズをよく理解することです。ニーズを解釈し、このオープンソース製品を変更および拡張する方法を決定します

二次開発後に何が得られますか?

ここでの経験はあなた自身のものであり、他の人のものです。いわゆる他者の利益とは、この二次開発を行うときに、このシステムのエッセンスを吸収して自分の思考に統合することができ、プロジェクト アーキテクチャの経験を要約することもできます。良いこと

という言葉がありますが、それは、賢い人は他人の失敗経験を自分の経験として考えるが、愚かな人は何度も失敗を経験した後、それを自分の経験として考えるということです。二次開発は単なる開発ではなく、本質を吸収し、経験を総括し、アイデアを正し、寄り道を避け、自分自身を向上させることが重要です。

巨人の肩の上に立つと、さらに先が見えてきます!!!

◆DedeCMS二次開発

より多くの人に二次開発を理解してもらい、より便利にDedeCMSの二次開発を理解してもらうために、開発、以下にDedeCMSの二次開発についての基礎と概要を簡単に紹介します

DedeCMSの二次開発に必要な基礎:

・HTMLにとても詳しい

・p+CSSのレイアウトに詳しい

・しっかりとしたPHPの基礎があり、構造化プログラミングに精通し、OOPを理解し、理解して使用できること

・MYSQLに精通し、SQL言語をマスターする

DedeCMS二次開発学習プロセス

・CMSとは何かを理解する

・DedeCMSのおなじみの機能(列分類、文書管理、モデルの利用、システム設定、その他の共通機能など)

・DedeCMSテンプレートタグの使い方と原則をマスターする

・DedeCMSのディレクトリ構造分析

各フォルダに慣れる主にファイルがインストールされるため、二次開発中にどのフォルダーにどのファイルを変更するかがわかります

ディレクトリ構造の概要:

./a 生成されたファイルの保存パス

./data キャッシュファイルとデータセンター

/admin バックグラウンドデータの管理

/backupdata バックアップデータ

/キャッシュキャッシュファイル

/enums レベル連携データ、JS、列挙型キャッシュファイル

/js よく使うJS

/mark ウォーターマーク関連ファイル

/module モジュールインストールファイル

/rss Rss関連

/sessions セッション保存パス

/textdata テキストデータ

/tplcacheテンプレートキャッシュ

/uploadtmpアップロードファイルキャッシュの場所

/ziptmp zipパッケージ解凍キャッシュの場所

DedeCMSファイル構造解析

各ファイルの基本的な機能に精通し、各ファイルの一般的な機能を理解した上で、ファイルを簡単に変更すると便利です

ファイル構造の概要:

common.inc.phpデータベース設定ファイル

config.cache.bak.phpの背景システム構成バックアップ

config.cache.inc.php バックグラウンドシステム構成ファイルキャッシュ

downmix.data.php 難読化されたキャッシュファイルのコレクション

mysql_error_track.inc MYSQLエラーログ

safequestions.php セキュリティ問題

sitemap.html サイトマップ

sys_pay.cache.php決済ゲートウェイ設定

template.rand.phpランダムテンプレート設定

……

・DedeCMSデータベース構造分析、少なくとも各テーブルの役割に精通している

の役割に精通している各テーブルの理解 いくつかのコアテーブルの設計とフィールドの意味により、段落を追加するか、新しい要件に対応するために新しいテーブルを作成するかを迅速に決定することが容易になります。同時に、DedeCMS のデータベース設計アイデアを理解し、有用な設計アイデアを独自のシステムに追加することもできます。

・DedeCMSプロセス制御といくつかのコアファイルの分析

ログイン、登録、ドキュメント管理、権限制御、分類管理、モデル設定などのいくつかの一般的なプロセス制御に精通している。いくつかのコア ファイルを分析して、そのプログラミング スキルとセキュリティ メカニズムを理解します

· DedeCMS プラグイン (**** プラグインおよび組み込みプラグイン) の開発

2 つのプラグインの作成と、プラグインのエクスポート、プラグインやモデルの利用

◆Ecshop二次開発

Ecshop二次開発学習方法

近年、インターネットの発展に伴い、電子商取引も成長してきました。 IT、B2B、C2C、B2C 電子商取引モデルも成熟し続けています。この時点で、は多くの電子商取引関連の PHP オープンソース製品を生み出しました。 B2Cに関しては、Ecshop、Zencart、Magentoなど国内外で有名な製品があります。

それでは、Ecshop二次開発を学ぶプロセスと注意すべき点を簡単に紹介します:

Ecshop二次開発に必要な基礎:

・HTMLに非常に精通している ・p+CSSのレイアウトに精通している

・しっかりしたPHPの基礎、構造化プログラミングに精通し、OOPを理解し、理解して使用できること

・Smartyテンプレートエンジンに精通している

・MYSQLに精通しており、SQL言語をマスターしている

Ecshop二次開発学習プロセス

・Eコマースの基本概念に精通している ・EcShopの基本機能(商品タイプ、商品分類、商品属性設定、プロモーションの利用など)に精通している

・データベース構造とデータベースをマスターするEcshop の設計アイデア

・ER モデル、エンティティとリレーションシップの確立に精通している

各テーブルの役割に精通し、いくつかのコア テーブルの設計とフィールドの意味を理解しているため、新しい要件を取得した後、単語

を追加するか、新しいテーブル取引を作成するかをすぐに判断できます。同時に、Ecshop のデータベース設計アイデアを理解し、有用な設計アイデアを自分のシステムに追加することもできます

・ファイル構造分析とコード分析

ある程度のログイン、登録、文書管理、権限制御、分類管理、製品に精通しているタイプなど。いくつかの一般的なプロセス制御。いくつかのコア ファイルを分析して、プログラミング スキルとセキュリティ メカニズムを理解します

· Ecshop ファイル構造分析:

includecls_captcha.php: 検証コード画像クラス

includecls_ecshop.php: 基本クラス

includecls_ecshop.php( includeslib_common.php: Common関数ライブラリ

includeslib_goodscat.php: フロントエンド共通関数ライブラリ

includeslib_insert.php: ダイナミックコンテンツ関数ライブラリ

includeslib_main.php: フロントエンド共通関数ライブラリ

includeslib_payment.php: 決済インターフェース関数ライブラリ

includeslib_iconv。 php: 文字セット変換クラス

includesipcls_ip.php: IP位置クエリクラス

includesmodulesintegratesdiscuz.php: メンバーデータ処理クラス

includesmodulesintegratesecshop.php: メンバーデータ処理クラス

Ecshopテンプレートの置き換え

Smartyのバージョン、独自インターフェースの埋め込み、EcShopテンプレート置換スキル

Ecshop二次開発例

中国語と英語の切り替え機能、フラッシュセール機能、JDモールテンプレート制作など

学習目標:

1.意志二次開発にはEcshopを使いましょう

2. 通常のテンプレートを変更したり、一部の機能を修正できるようになります

3. 開発経験から学ぶ

基礎知識をマスターする~「書き方の一部を真似する~」 内部のパターンを修正(フォーム)独自の開発モデル)

Ecshop でプログラミングスキルとシステム設計スキルをマスターする

◆キャッシュ技術分析

一般的な PHP キャッシュ技術分析【概念版】

ほとんどの場合、私たちの Web サイトはサイトデータの保存コンテナとしてデータベースを使用します。 SQL クエリを実行するときの一般的な処理プロセスは次のとおりです。データベースに接続します - > SQL クエリを準備します - > データベースから返された結果を取得します - > データベース接続を終了します。ただし、データベース

内の一部のデータは完全に静的であるか、頻繁に変更されません。キャッシュ システムは SQL クエリの結果を高速なストレージ システムにキャッシュして、頻繁なデータベース操作を回避します。また、クエリ結果をキャッシュすることで、次のことも可能になります。後で処理するためです。

一般的に使用されるキャッシュ技術

データ キャッシュ: ここで言うデータ キャッシュとは、ページにアクセスするたびに、まず対応するキャッシュ データが存在するかどうかを検出し、存在しない場合は接続します。データベース、データを取得し、クエリ結果をシリアル化してファイルに保存します

将来的には、同じクエリ結果がキャッシュ ファイルから直接取得されるようになります。

ページキャッシュ:

ページにアクセスするたびに、まず対応するキャッシュされたページファイルが存在するかどうかを検出し、存在しない場合はデータベースに接続してデータを取得し、

ページを表示してキャッシュされたファイルを生成します。ページ ファイルも同時に作成されるため、次回アクセスしたときにページ ファイルが有効になります。 (インターネット上のテンプレート エンジンといくつかの一般的な

キャッシュ クラスには、通常この機能があります)

メモリ キャッシュ:

この記事では簡単に説明する内容ではありません。 Memcached は、データベースの負荷を軽減し、動的アプリケーションのアクセス速度を向上させるために使用される高性能の分散メモリ オブジェクト キャッシュ システムです。

Dbcached は、Memcached と NMDB に基づいた分散キー値データベース メモリ キャッシュ システムです。

上記のキャッシュ テクノロジは頻繁なデータベース クエリの問題を十分に解決できますが、データがタイムリーではないという欠点があります。以下に、私が

プロジェクトでよく使用するメソッドを示します。

時間トリガー キャッシュ:

ファイルが存在し、タイムスタンプが設定された有効期限より小さいかどうかを確認します。ファイル変更タイムスタンプが現在のタイムスタンプから有効期限タイムスタンプ

を引いた値より大きい場合は、キャッシュを使用し、それ以外の場合はキャッシュを更新します。

設定時間内にデータを更新する必要があるかどうかを判断せず、設定時間後にキャッシュを更新します。上記は、適時性の要件が高くない場合の使用にのみ適しています。それ以外の場合は、以下を参照してください。

コンテンツトリガーキャッシュ:

データが挿入または更新されると、キャッシュは強制的に更新されます。

ここで、大量のデータを頻繁に更新する必要がある場合、最終的にはディスクの読み取りおよび書き込み操作が関与することがわかります。それを解決するにはどうすればよいでしょうか? 私は通常、すべてのコンテンツをキャッシュするのではなく、頻繁に変更されない一部のコンテンツをキャッシュして問題を解決します。ただし、負荷が高い場合は、共有

メモリをキャッシュ システムとして使用するのが最善です。

現時点では、PHP キャッシュが解決策になる可能性がありますが、その欠点は、各リクエストを PHP で解析する必要があるため、負荷が高い場合には効率の問題がさらに深刻になることです。この場合、静的キャッシュが使用される可能性があります。 。

静的キャッシュ

ここで言う静的キャッシュとは、HTML キャッシュのことを指します。HTML が通常使用される状況

は、通常、コンテンツが更新されるページであるため、HTML キャッシュは通常、データを更新する必要があるかどうかを判断する必要はありません。頻繁に変更しないこと。データが更新された場合は、HTML を強制的に更新するだけです。

実際、キャッシュ システムには多くの問題が含まれます。ここでは、私の通常のキャッシュのアイデアのみを紹介します。

キャッシュを実装して特定のコードを記述するためのソフトウェアの使用については紹介しません。

何か良い解決策がございましたら、以下に提出して一緒に議論させてください。

◆PHPは関数を使ってコマンドを呼び出します

PHPはexecやsystemなどの関数を使ってシステムコマンドを呼び出します

PHPの組み込み関数execやsystemではシステムコマンド(シェルコマンド)を呼び出すことができ、もちろん関数もありますpassthru やescapeshellcmd など。

多くの場合、PHP の exec、system、およびその他の関数を使用してシステム コマンドを呼び出すと、作業をより適切かつ迅速に完了するのに役立ちます。たとえば、2 日前に .rar ファイルをバッチ処理していたとき、exec は非常に役に立ちました。

今日は、よく使われる通話システムの機能を整理し、私の経験を皆さんと共有します。

注: これら 2 つの関数を使用したい場合は、php.ini のセーフ モードをオフにする必要があります。オフにしないと、セキュリティ上の理由から、php はシステム コマンド

を呼び出すことを許可しません。 まず、PHPマニュアルでこれら2つの関数の説明を見てください:

Exec --- 外部プログラムを実行します

構文: string exec ( string command [, array &output [, int &return_var]] )

説明:

exec() は指定されたコマンドを実行しますが、何も出力しません。

などのコマンドの結果から最後の行を返すだけです。

コマンドを実行してコマンドからすべてのデータを取得する必要がある場合は、 passthru() 関数を使用できます。

パラメータ配列が指定されている場合、指定された配列にはコマンドによって出力された各行が書き込まれます。配列にすでに要素が含まれている場合は、後でそれらの要素を配列に追加します。この関数に要素を追加したい場合は、この配列を

exec() に渡す前に unset() を呼び出すことができます。

パラメータ array と return_var が与えられた場合、実行に戻されたステータスコマンドがこの変数に書き込まれます。

注: ユーザー入力からのデータがこの関数に渡されることを許可する場合は、escapeshellcmd() を使用して、ユーザーがシステムをだまして任意のコマンドを実行できないようにする必要があります。

注: この関数を使用してプログラムを開始し、それがバックグラウンドで実行されている間そのプログラムをそのままにしておく場合は、プログラムの出力がファイルまたは何らかの出力データ フローにリダイレクトされていることを確認する必要があります。 PHP はプログラムの実行が終了するまでハングします。

System --- 外部プログラムを実行し、出力を表示します

構文: string system ( string command [, int &return_var] )

説明:

System( ) は、指定されたコマンド command を実行し、結果を出力します。パラメータ return_var が指定されている場合、実行されたコマンドのステータス コードがこの変数に書き込まれます。

注: ユーザー入力からのデータがこの関数に渡されることを許可する場合は、escapeshellcmd() を使用して、ユーザーがシステムをだまして任意のコマンドを実行できないようにする必要があります。

注: この関数を使用してプログラムを開始し、それがバックグラウンドで実行されている間そのプログラムをそのままにしておく場合は、プログラムの出力がファイルまたは何らかの出力データ フローにリダイレクトされていることを確認する必要があります。 PHP はプログラムの実行が終了するまでハングします。

PHPがサーバーモジュールとして実行されている場合、system()は各行を出力した後にWebサーバーの出力バッファを自動的にクリアしようとします。

成功した場合はコマンドの最後の行を返し、失敗した場合は false を返します。

コマンドを実行して、コマンドからすべてのデータを取得する必要がある場合は、 passthru() 関数を使用できます。

これら 2 つはシステム シェル コマンドを呼び出すために使用されます。

違い:

Exc はすべての実行結果を $output 関数 (配列) に返すことができ、$status は実行ステータス、0 は成功、1 は失敗

systermは$output関数を提供する必要はなく、結果を直接返します。同様に、$return_varは実行のステータスコードです。0は成功を意味し、1

は失敗を意味します

◆オープンソースについて

の最大の成功です。オープンソースは Web から来ています

オープンソース運動は非常に人気があり、ソフトウェア開発の歴史に足跡を残しています。しかし、その最も広範な影響はどこにあるのでしょうか? 歴史上最も成功したオープンソース「プロジェクト」は何でしょうか? 実際、全体として、オープンソース運動の最大の成功は Web ではないでしょうか? おそらく最も有名な例は次のとおりです。 Linux、Apache、MySQL、PHP など、隠しドメインの多くの Web サイトの背後にある LAMP。しかし、考えてみると

、さらに多くのことがわかります。

以下は、Web を機能させるいくつかのオープンソース プロジェクトのリストです。

Web ブラウザ - Web ブラウザ

Web ブラウザ市場では、Microsoft のクローズドソース ソフトウェア IE ブラウザが依然として大きなシェアを占めていますが、同様の機能を備えた他のオープンソース プロジェクト

も人気を集めており、成長しています。 Mozilla の Firefox ブラウザと同様です (Flock や PaleMoon と同様にオープンソースです)。 Safari などの Webkit ベースのブラウザも急速に成長していますが、最も有名なのは Chrome です。

モバイルネットワークを含めると、WebkitはiPhone、Android、Blackberry携帯電話のブラウザを独占します。

Web サーバー ソフトウェア - Web サーバー ソフトウェア

これまでのところ、Apache が最も広く使用されているオープンソースですが、近年では Nginx と呼ばれる軽量のサーバー ソフトウェアが普及しています。実際、Web サーバー ソフトウェアの上位 3 つのうち 2 つはオープンソースです (2 位にランクされている Microsoft の IIS は例外ですが、1 位には程遠いです)。

さらに、サーバー側の基盤となるソフトウェアの多くもオープンソースです。たとえば、トラフィックの多い Web サイトの多くは、Web サイト訪問者間のキャッシュ レイヤーとして Varnish を使用し、Web サイト データベース間のキャッシュ レイヤーとして Memcached を使用します。これらは多くの例のうちの 2 つにすぎません。

スクリプト言語とWebフレームワーク - スクリプト言語とWebフレームワーク

インターネットで使用されているプログラミング言語とスクリプト言語のほとんどは、PHP、Perl、Python、Rubyなどのオープンソースです。

しかし、完全にゼロから構築するウェブサイトはほとんどありません。 WordPress、Drupal、Ruby on Rails、Django、Joomla、DedeCMS、Ecshop など、開発者を支援するオープンソースのコンテンツ管理システム (CMS) や Web フレームワーク

が何百もあると言っても過言ではありません。

データベース-データベース

Web サイトのデータベースとしてはオープンソース ソフトウェアの MySQL がダントツで最も人気がありますが、最近数多く登場している「非リレーショナル (NoSQL)」データベースはもちろん、PostgreSQL など同様の機能を備えたオープンソース ソフトウェアも存在します。

基盤となるソフトウェアについて話したので、私たちがインターネットやインターネット上の何かを使用するたびに依存する基本的な

システムについても触れなければなりません:

DNS - ドメイン名解決システム

Web (さらに言えば) ) (インターネット全体は) ドメイン名解決システムがなければ役に立ちません。ご存知のとおり、ドメイン名解決システムを使用すると、ユーザーは IP アドレスの代わりに example.com などのドメイン名を使用できます。 BIND は、DNS サーバー (別名ネーム サーバー) ソフトウェアの事実上の標準であり、もうお気づきかと思いますが、オープン ソースです。

サーバーオペレーティングシステム - サーバーオペレーティングシステム

すべてのWebサイトはサーバー上で実行する必要があり、そこにオープンソースが君臨します。デスクトップ領域では Windows が主流ですが、Web サイトを実行するほとんどのサーバーでは、オープン ソースの Linux オペレーティング システムが使用されています。他に、freeBSD や OpenBSD も人気があります。

オープンソースの誘惑

多くの場合、オープンソースソフトウェアは商用のクローズドソースソフトウェアと同等のパフォーマンスを提供でき、しかも無料であるため、オープンソースソフトウェア

が非常に人気があるのも不思議ではありません。無料というのはなかなか得難い価格です。

もし Web がこのすべてのフリー ソフトウェアで動作しなかったら、おそらく広く受け入れられるのは難しいでしょう。

Web 上にクローズド ソース ソフトウェアが存在しないとは言っていないことに注意してください。明らかに存在します。しかし、統計的に言えば、Web オープンソースの優位性における本当の例外は、Microsoft の Windows ベースの一連のシステムです。

さらに、ルーターや同様のデバイスのオペレーティング システムなど、より独自のクローズド ソース テクノロジーを見つけるには、通常はさらに深く掘り下げる必要があります。しかし、その

はインターネットであり、Web ではありません。

以上がcmsの二次開発に最適なものを詳しく紹介します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。