php インタビューの質問と回答は、2018 年 6 月 3 日に更新されました。これには、PHP の基本部分、データベース部分、オブジェクト指向部分、ThinkPHP 部分、スマート テンプレート エンジン、二次開発システム (DEDE、ecshop)、WeChat パブリック プラットフォーム開発、および自分用が含まれます。 PHP 面接の質問には、習得したテクノロジーの説明が含まれます。
1. PHP 言語の大きな利点の 1 つはクロスプラットフォームです。クロスプラットフォームとは何ですか?
PHP の実行環境の最適な組み合わせは、Apache+MySQL+PHP です。この実行環境は、さまざまなオペレーティング システム (Windows、Linux など) 上で構成でき、オペレーティング システムによって制限されないため、クロスと呼ばれます。 -platform
2. WEB 開発中にデータを送信する方法は何通りありますか?違いは何ですか? Baidu はどの方法を使用しますか?
Get メソッドと post メソッド
の違い:
1. Get はサーバーからデータを取得し、post はデータをサーバーに送信します
2. Get によって渡された値は URL に表示されますが、post によって渡された値は URL に表示されません。 url
3. Get で渡される値は通常 2KB 以内で、post 値のサイズは php.ini で設定できます
4. Get のセキュリティは低くなく、Post のセキュリティは高くなりますが、実行効率は Post よりも高くなります
推奨事項:
1. Get タイプは Post タイプより安全です。機密情報が含まれる場合は、Post データ送信メソッドを使用することをお勧めします。
2. データの追加、変更には Get メソッドを使用することをお勧めします。または削除する場合は、Post メソッドを使用することをお勧めします。
Baidu で使用される get メソッドは、URL から確認できるためです
PHP 面接質問バンク ネットワーク ディスクのダウンロード
PHP 面接質問バンク ネットワーク ディスクのダウンロード
質問バンク集ダウンロード: PHP 面接質問概要ネットワークディスクダウンロード
3. PHP のフレームワーク、テンプレートエンジン、システムなどをマスターします
フレームワーク: zendframe、CI、Yii など、多くのフレームワークがあります。私たちが学んだのは thinkphp です
テンプレート エンジン: 教科書にも載っているものも含めてたくさんありますが、私たちが学んだのは Smarty です
システム: Kangsheng の製品 (uchome、supesite、discuzX など)、Empire System など、たくさんあります、DEDE (Dream Weaver)、ecshop など。私たちが学んだことは、DEDECMS、Ecshop
4。どのような Web フロントエンド技術を習得したか教えてください。
DIV+CSS Web ページレイアウト、JavaScript、jQuery フレームワーク、Photoshop 画像処理に精通しています
5. AJAX の利点は何ですか? 6. プログラムにとってセキュリティは重要です。開発中にセキュリティメカニズムに注意を払う必要がありますか?
①リモート送信を防止する; ②SQL インジェクションを防止し、特殊コードをフィルタリングする; ③登録マシンのフラッディングを防止し、検証コードを使用する;
7. プログラムの動作効率を向上させるにはどうすればよいですか?
① SQL ステートメントを最適化し、クエリ ステートメントで select * を使用しないようにし、どのフィールドを使用するかを減らし、テーブル接続で置き換えることができます。② データ テーブルにインデックスを作成します。頻繁に使用されるプログラム 受信したデータはキャッシュされます
8. PHP は他のデータベースでも使用できますか?
PHP は MYSQL データベースとの組み合わせに最適です。もちろん、PHP は MSSQL などの他のデータベースと併用することもできます。PHP には MSSQL を操作するための予約関数があり、それが有効になっている限り使用できます
。
9. 今のプログラム MVC の 3 層構造はインターネットでよく採用されていますが、MVC とはどの 3 層を指し、その利点は何ですか?
MVC の 3 つの層はそれぞれ、ビジネス モデル、ビュー、コントローラーを指します。コントローラー層はモデルを呼び出してデータを処理し、データをビュー層にマッピングして表示します。コードの再利用性とコードの冗長性の回避 ②同じプログラムで異なる表現形式を使用できるように、MとVの実装コードが分離されています
10. jsonデータ形式を理解していますか?
JSON (JavaScript Object Notation) は軽量のデータ交換形式であり、json データ形式は固定されており、複数の言語でのデータ転送に使用できます。
json 形式を処理する PHP の関数は json_decode( string $json [, bool. $assoc ] ) は、JSON 形式の文字列を受け入れ、それを PHP 変数に変換します。パラメータ json は、デコードされる json 文字列形式の文字列です。このパラメータが TRUE の場合、assoc はオブジェクトの代わりに配列を返します。Json_encode: PHP 変数を JSON 形式に変換します
11. Print、echo、print_r の違いは何ですか?
① echoとprintはどちらも出力ができます。 違いは、echoは関数ではないので戻り値がありませんが、printは戻り値がある関数なので、echoを出力するだけの方が相対的には速いです。 print_r は通常、変数に関する情報を印刷するために使用され、通常はデバッグに使用されます。
③ print_r は配列オブジェクトなどの複合型を出力します
12. セッションとクッキーの違いは何ですか?
①保存場所:セッションはサーバーに保存され、Cookieはブラウザに保存されます
②セキュリティ:セッションのセキュリティはCookieよりも高いです
②substr_replace() は文字列の一部を別の文字列に置き換えます。 ) 文字列内に部分文字列が出現する回数をカウントします。
④substr() は文字列の一部を返します。
⑥strtoupper() は文字列を大文字に変換します。文字列内の特定の文字を変換します。
⑧strrchr() は、別の文字列内の最後の文字列を検索します。 strrev() は、別の文字列内の最初の文字列を検索します。 ) 文字列の長さを返します。 str_replace() は文字列内の一部の文字を置き換えます (大文字と小文字を区別します)。 print() は 1 つ以上の文字列を出力します。 is_string() は、変数が配列に分割されているかどうかを検出します。は文字列です。strip_tags() は文字列から HTML タグを削除します。mb_substr() は、PHP の処理時間を短縮するために使用される関数です。 (関数の「パラメーター」と「戻り値」に注目してください)
date_default_timezone_get() はデフォルトのタイムゾーンを返します。
date_default_timezone_set() はデフォルトのタイムゾーンを設定します。
date() は現地時間/日付をフォーマットします。
getdate() は日付/時刻情報を返します。
microtime() は現在の時刻のマイクロ秒数を返します。
mktime() は日付の Unix タイムスタンプを返します。strtotime() は、英語のテキストの日付または時刻の記述を Unix タイムスタンプに解析します。
time() は、現在の時刻の Unix タイムスタンプを返します。
16. PHP がデータベースを処理するためによく使用される関数は何ですか? (関数の「パラメータ」と「戻り値」に注目してください)
これは非常に重要ですので、PHPマニュアルを参照してよく読んでください
17. PHPでファイルを操作するためによく使用される関数は何ですか? (関数の「パラメータ」と「戻り値」に注目)
データ定義: テーブルの作成、テーブルの変更、テーブルの削除、インデックスの作成/削除など
データ操作: 選択、挿入、更新、削除、データ コントロール: 付与、取り消し
データ クエリ: 選択3.どれが含まれますか?
答え: データの整合性とは、データの正確さと信頼性を指します。
これは次の 4 つのカテゴリに分類されます:
1) エンティティの整合性: テーブルの各行がテーブル内で一意のエンティティであることを規定します。
2) ドメインの整合性: テーブル内の列が、値の範囲、精度、その他の規制を含む特定のデータ型の制約を満たす必要があることを意味します。
4) ユーザー定義の整合性: さまざまなリレーショナル データベース システムでは、アプリケーション環境に応じて特別な制約が必要になることがよくあります。ユーザー定義の整合性は、特定のリレーショナル データベースに対する制約であり、特定のアプリケーションが満たさなければならないセマンティック要件を反映しています。
テーブル関連の制約: 列制約 (NOT NULL (非ヌル制約)) およびテーブル制約 (PRIMARY KEY、外部キー、チェック、UNIQUE) が含まれます。
4. トランザクションとは何ですか?そしてその特徴は?
答え: トランザクション: 一連のデータベース操作であり、データベース アプリケーションの基本的な論理単位です。
トランザクションの特性:
(1) 原子性: つまり、すべてのトランザクションが実行されるか、何も実行されないかのどちらかです。
(2) 一貫性または文字列化可能性。トランザクションの実行により、データベースは 1 つの正しい状態から別の正しい状態に変換されます
(3) 分離。トランザクションが正しくコミットされるまでは、トランザクションによって行われたデータへの変更を他のトランザクションに提供することはできません。
(4) 耐久性。トランザクションが正しく送信されると、トランザクションの送信後に他のエラーが発生した場合でも、トランザクションの処理結果はデータベースに永続的に保存されます。
または次のように理解してください:
トランザクションは、論理的な作業単位として結合された SQL ステートメントのグループです。ステートメント操作が失敗すると、操作全体が失敗し、その後の操作は前の状態にロールバックされます。操作、または前の状態へのノードがあります。何かが実行されるか実行されないかを確認するには、トランザクションを使用できます。グループ化されたステートメントがトランザクションとみなされるには、ACID テスト (原子性、一貫性、分離性、耐久性) に合格する必要があります。
5. ロックとは何ですか?
回答: データベースは複数のユーザーが使用する共有リソースです。複数のユーザーが同時にデータにアクセスすると、複数のトランザクションがデータベース内の同じデータに同時にアクセスします。同時操作が制御されていない場合、誤ったデータが読み取られて保存され、データベースの一貫性が破壊される可能性があります。
ロックはデータベースの同時実行制御を実現するために非常に重要なテクノロジーです。トランザクションはデータ オブジェクトを操作する前に、まずシステムにロック要求を送信します。ロック後、トランザクションはデータ オブジェクトに対して一定の制御を持ちます。ロックを解放するまでは、他のトランザクションはデータ オブジェクトを更新できません。
基本的なロックの種類: ロックには行レベルのロックとテーブルレベルのロックが含まれます
6. ビューとは何ですか?カーソルとは何ですか?
回答: ビューは、物理テーブルと同じ機能を持つ仮想テーブルです。ビューは、通常、1 つまたは複数のテーブルの行または列のサブセットです。ビューを変更しても、基になるテーブルには影響しません。複数テーブルのクエリよりも簡単にデータを取得できます。
カーソル: クエリ結果セットを単位として効果的に処理します。カーソルをセル内の特定の行に配置して、結果セット内の現在の行から 1 つ以上の行を取得できます。結果セットの現在の行を変更できます。カーソルは通常は使用されませんが、データを 1 つずつ処理する必要がある場合、カーソルは非常に重要です。
7. ストアド プロシージャとは何ですか?何と呼べばいいでしょうか?
回答: ストアド プロシージャはプリコンパイルされた SQL ステートメントであるため、モジュール設計が可能になるという利点があります。つまり、ストアド プロシージャを一度作成するだけで、後からプログラム内で複数回呼び出すことができます。特定の操作で SQL を複数回実行する必要がある場合は、単純な SQL ステートメントを実行するよりもストアド プロシージャを使用した方が高速です。ストアド プロシージャは、コマンド オブジェクトを使用して呼び出すことができます。
8. インデックスの役割は何ですか?そして、その利点と欠点は何ですか?
回答: インデックスは、データベース検索エンジンがデータの取得を高速化するために使用できる特別なクエリ テーブルです。これは現実の本の目次に非常に似ており、本全体をクエリしなくても必要なデータを見つけることができます。インデックスは一意にすることができ、インデックスを作成すると、単一の列または複数の列を指定できます。欠点は、データ入力が遅くなり、データベースのサイズが大きくなることです。
9. 3 つのパラダイムを一般的に理解するにはどうすればよいですか?
答え: 第一正規形: 1NF は属性に対する原子性制約であり、属性が原子的である必要があり、分解することはできません。
第二正規形: 2NF はレコードの一意性制約であり、レコードには一意の識別子が必要です。 、エンティティ。第 3 正規形: 3NF はフィールドの冗長性に関する制約です。つまり、フィールドは他のフィールドから派生できず、フィールドが冗長ではないことが必要です。 。
10. 基本テーブルとは何ですか?ビューとは何ですか?
回答: 基本テーブルは、SQL では独立して存在するテーブルであり、リレーションシップはテーブルに対応します。 ビューは、1 つまたは複数のベース テーブルから派生したテーブルです。ビュー自体はデータベースに独立して保存されるのではなく、仮想テーブルです
11. ビューの利点について説明してください。
答え: (1) ビューにより、ユーザーの操作が簡素化されます。 (2) ビューにより、ユーザーは複数の観点から同じデータを表示できます。 (3) ビューにより、データベースにある程度の論理的独立性が提供されます。 (4) ビューはデータの機密性を維持できます。セキュリティ保護が提供されます。
12. NULL とはどういう意味ですか?
答え: 値 NULL は UNKNOWN (不明) を表し、「」 (空の文字列) を表しません。 NULL 値と比較すると、NULL 値が生成されます。値を NULL 値と比較して、論理的に答えが得られることを期待することはできません。
NULL判定にはIS NULLを使用
13. 主キー、外部キー、インデックスの違いは何ですか?
主キー、外部キー、インデックスの違い
定義:
主キー - レコードを一意に識別し、重複することはできず、空にすることはできません
外部キー - テーブルの外部キーは別のテーブルの主キーですテーブル、外部キーは重複を持つことができ、null 値も可能です
インデックス -- このフィールドには重複する値はありませんが、null 値を持つことができます
機能:
主キー -- データの整合性を確保するために使用されます
外部キー --他のテーブルとの接続を確立するために使用されます
インデックス -- クエリのソート速度を向上させるためのものです
番号:
主キー -- 主キーは 1 つだけ存在できます
外部キー -- テーブルには複数の外部キーを持つことができます
インデックス --テーブルには複数の一意のインデックスを持つことができます
14. テーブル内のフィールドが特定の範囲の値のみを受け入れるようにするには、何を使用できますか?
答え: データベース テーブルで定義されている制限を確認してください。列に入力された値。
トリガーを使用してデータベーステーブルのフィールドが受け入れることができる値を制限することもできますが、この方法ではテーブルにトリガーを定義する必要があり、場合によってはパフォーマンスに影響を与える可能性があります。
15. SQL ステートメントを最適化する方法は何ですか? (いくつか選択してください)
(1) Where 句内: Where テーブル間の接続は他の Where 条件より前に記述する必要があり、最大数のレコードを除外できる条件は Where 句の最後に記述する必要があります。 . 持つことは最後です。
(2) IN を EXISTS に、NOT IN を NOT EXISTS に置き換えます。
(3) インデックス列での計算の使用を避ける
(4) インデックス列で IS NULL と IS NOT NULL の使用を避ける
(5) クエリを最適化するには、テーブル全体のスキャンを避けるようにしてください。まず場所と順序を検討してください。 by に関係するコラム。
(6) where 句内のフィールドに対して null 値の判定を行わないようにする必要があります。そうしないと、エンジンはインデックスの使用を放棄し、テーブル全体のスキャンを実行します。
(7) where 句内のフィールドに対して式操作を実行しないようにしてください。これにより、エンジンはインデックスの使用を断念し、テーブル全体のスキャンを実行します
16. SQL ステートメントの「相関サブクエリ」と「非相関サブクエリ」の違いは何ですか?
答え: サブクエリ: 他のクエリ内にネストされたクエリと呼ばれます。
サブクエリは内部クエリとも呼ばれ、サブクエリを含むステートメントは外部クエリ(メインクエリとも呼ばれます)と呼ばれます。
すべてのサブクエリは、相関サブクエリと非相関サブクエリの 2 つのカテゴリに分類できます。
(1) 非相関サブクエリは、外部クエリから独立したサブクエリです。サブクエリは、実行後に合計 1 回実行されます。外部クエリに渡されます。
(2) 当該サブクエリの実行は、外部クエリのデータに依存し、外部クエリが1行実行されると、サブクエリは1回実行されます。
非相関サブクエリは相関サブクエリより効率的です
17. char と varchar の違いは何ですか?
答え: varchar は固定長型であり、varchar は可変長型です。 それらの違いは次のとおりです。
char(M) 型のデータ列は、特定の長さが以下の場合、各値が M バイトを占有します。 M、MySQL は右側にスペース文字を埋め込みます。 (パディングスペース文字は検索操作中に削除されます。) varchar(M) タイプのデータ列では、各値はその長さを記録するのに十分なバイトと 1 バイトのみを占めます (つまり、合計の長さは L+1 バイトです) )。
18. Mysql ストレージ エンジン、myisam と innodb の違い。
答え: 簡単な表現:
MyISAM は、頻繁なクエリを使用するアプリケーションに適しており、デッドロックがありません。
innodb は、アプリケーションに適したトランザクションをサポートするストレージ エンジンです。適切に設計されている場合は、大量の挿入および更新操作が行われます (最大の違いはロックのレベルにあります)。ビッグデータと大規模な同時実行に適しています。
19. データテーブルの種類は何ですか?
答え: MyISAM、InnoDB、HEAP、BOB、ARCHIVE、CSV など。
MyISAM: 完成度が高く、安定していて、管理が簡単で、読みやすいです。一部の関数 (トランザクションなど) はテーブルレベルのロックをサポートしていません。
InnoDB: トランザクション、外部キーおよびその他の機能、データ行ロックをサポートします。多くのスペースを占有し、全文インデックス作成などはサポートされていません。
20. MySQL データベースは、1 日あたり 50,000 件を超える増加分の運用とメンテナンスにかかると推定されています。
a. 効率を向上させるために、適切に設計されたデータベース構造を設計し、部分的なデータの冗長性を許可し、結合クエリを回避するように努めます。
b. 適切なテーブル フィールドのデータ型とストレージ エンジンを選択し、インデックスを適切に追加します。
c. mysql ライブラリは、マスターとスレーブの読み取りと書き込みを分離します。
d. 通常のテーブルを見つけて、単一テーブル内のデータ量を減らし、クエリ速度を向上させます。
e. memcached、apc などのキャッシュ メカニズムを追加します。
f. 頻繁に変更されないページには静的ページを生成します。
g. 効率的な SQL を作成します。たとえば、SELECT * FROM TABEL は SELECT field_1, field_2, field_3 FROM TABLE に変更されます。
21 トラフィックの多い Web サイトの場合、ページ訪問の統計の問題を解決するためにどのような方法を使用しますか?
回答:
a. サーバーが現在のトラフィックをサポートできるかどうかを確認します。
b. データベースアクセスを最適化します。
c. 画像のホットリンクなど、リンクへの外部アクセス (ホットリンク) を禁止します。
d. ファイルのダウンロードを制御します。
e. 異なるホストを使用してトラフィックを分散します。
f. 閲覧統計ソフトウェアを使用して訪問数を把握し、対象を絞った最適化を実行します。
3: オブジェクト指向の部分
トップに戻る
1. オブジェクト指向とは何ですか? (理解して答える)
答え: オブジェクト指向 OO = オブジェクト指向分析 OOA + オブジェクト指向設計 OOD + オブジェクト指向プログラミング OOP; 一般的な説明は、「すべてがオブジェクトである」であり、すべてのものは独立したオブジェクト (ユニット) と見なされます。 、C のように関数に分割されるのではなく、独自の関数を完成させることができます。
現在の純粋な OO 言語は主に Java と C# であり、C はプロセス指向です。
2. private、protected、public 修飾子のアクセス権を簡単に説明します。
答え: プライベート: プライベートメンバーにはクラス内でのみアクセスできます。
protected: 保護されたメンバー。クラスおよび継承されたクラス内でアクセス可能。
public: 公開メンバー。完全に公開されており、アクセス制限はありません。
3. ヒープとスタックの違いは何ですか?
答え: スタックはコンパイル中に割り当てられるメモリ空間であるため、スタックのサイズはコード内で明確に定義する必要があります。
ヒープはプログラムの実行中に動的に割り当てられるメモリ空間です。プログラムの実行ステータスに応じて、割り当てるヒープ メモリのサイズを決定します。
4. XML と HTML の主な違い
答え: (1) XML は大文字と小文字を区別しますが、HTML は区別しません。
(2) HTML では、段落キーまたはリスト キーの終了位置がコンテキストで明確に示されている場合は、
や
などの終了タグを省略できます。 XML では、終了タグを省略してはなりません。
(3) XML では、一致する終了タグのない単一のタグを持つ要素は / 文字で終わる必要があります。このようにして、パーサーは終了タグを検索しないことを認識します。
(4) XMLでは属性値を引用符で囲む必要があります。 HTML では、引用符はオプションです。
(5) HTML では、値のない属性名を持つことができます。 XML では、すべての属性に対応する値が必要です。
5. オブジェクト指向の特徴は何ですか?
回答: 主にカプセル化、継承、ポリモーフィズムが含まれます。 4 つの側面の場合は、抽象化を追加します。
以下の説明は理解のためのものです:
カプセル化: カプセル化は、ソフトウェア コンポーネントの優れたモジュール性を確保するための基礎であり、ソフトウェア コンポーネントの高い結合性と低い結合性を実現し、プログラムの相互依存性の影響による変更を防ぐことです。
継承:
クラスを定義して実装するときは、既存のクラスに基づいて実行でき、この既存のクラスで定義されたコンテンツを独自のコンテンツとして使用したり、新しいコンテンツを追加したり、変更したりできます。特別なニーズにより適したものにするための独自のメソッドが継承です。継承は、サブクラスが親クラスのデータとメソッドを自動的に共有するメカニズムであり、ソフトウェアの再利用性と拡張性を向上させるクラス間の関係です。
ポリモーフィズム:
ポリモーフィズムとは、プログラム内で定義された参照変数が指す特定の型と、参照変数を介して発行されるメソッド呼び出しがプログラミング中に決定されるのではなく、プログラムの実行中に決定されること、つまり参照を意味します。変数が反転される。どのクラス インスタンス オブジェクトが指すか、参照変数によって発行されるメソッド呼び出しがどのクラスに実装されるメソッドになるかは、プログラムの実行中に決定する必要があります。
抽象化:
抽象化とは、いくつかの物事の類似点と共通点を見つけて、それらをクラスに分類することです。このクラスでは、これらの物事の類似点と共通点のみが考慮され、現在のトピックと目標に無関係なものは無視されます。側面: 現在の目標に関連する側面に焦点を当てます。たとえば、アリとゾウを見て、それらがどのように似ているかを想像できる場合、それは抽象化です。
特殊な抽象クラスとインターフェイスを使用して宣言された特殊なクラスです。
(1) 抽象クラスの操作は継承キーワード extends によって実装され、インターフェイスの使用はimplements キーワードによって実装されます。
(2) データのカプセル化を実現できる抽象クラスにはデータメンバが存在しますが、インターフェースにはデータメンバがありません。
(3) 抽象クラスはコンストラクターを持つことができますが、インターフェイスにはコンストラクターがありません。
(4) 抽象クラスのメソッドは、private、protected、public キーワードを使用して変更できます (抽象メソッドをプライベートにすることはできません)。一方、インターフェイス内のメソッドは、public キーワードを使用してのみ変更できます。
(5) クラスは 1 つの抽象クラスからのみ継承でき、クラスは複数のインターフェイスを同時に実装できます。
(6) 抽象クラスはメンバー メソッドの実装コードを持つことができますが、インターフェイスはメンバー メソッドの実装コードを持つことができません。
デストラクター (メソッド) は、コンストラクターの逆です。オブジェクトが破棄される前に、オブジェクトによって自動的に呼び出される最後のメソッドです。これは PHP5 で新しく追加されたコンテンツで、ファイルを閉じたりメモリを解放したりするなど、オブジェクトを破棄する前に特定の操作を実行するために使用されます。
回答: オーバーロードとは、親クラスのメソッドをオーバーライドすること、つまり、サブクラスのメソッドを使用して親クラスから継承したメソッドを置き換えることを意味し、メソッドの書き換えとも呼ばれます。
親クラスのメソッドをオーバーライドする鍵は、メソッド名、パラメータ、戻り値の型を含む同じメソッドをサブクラスの親クラスに作成することです。 PHP では、メソッドの名前のみが同じである必要があります。
9. よく使われる魔法の方法は何ですか?たとえば
回答: PHP では、2 つのアンダースコア (__) で始まるメソッドはマジック メソッドとして予約されると規定されているため、既存のマジック メソッドをオーバーロードする場合を除き、関数名を __ で始めないことをお勧めします。
__construct() はクラスをインスタンス化するときに自動的に呼び出されます。
__destruct() は、クラスオブジェクトが使用されるときに自動的に呼び出されます。
__set() は、未定義のプロパティに値を割り当てるときに呼び出されます。
__get() は、未定義のプロパティが呼び出されたときに呼び出されます。 isset() または empty() 関数を使用すると、
__isset() が呼び出されます。 unset()を使用すると
__unset()が呼び出されます。
__sleep() は、serialize を使用してシリアル化するときに呼び出されます。
__wakeup() は、unserialize を使用してデシリアライズするときに呼び出されます。
__call() は、存在しないメソッドを呼び出すときに呼び出されます。
__callStatic() は存在しない静的メソッドを呼び出します。
__toString() は、オブジェクトを文字列に変換するときに呼び出されます。エコーなど。
__invoke() オブジェクトをメソッドとして呼び出そうとするときに呼び出されます。
__set_state() は、var_export() 関数を使用するときに呼び出されます。配列パラメータを受け入れます。
__clone() clone を使用してオブジェクトをコピーするときに呼び出されます。
10. $this、self、parent の 3 つのキーワードはそれぞれ何を表しますか?どのような状況で使用されますか?
答え: $this 現在のオブジェクト
self 現在のクラス
parent 現在のクラスの親クラス
$this は現在のクラスで使用されており、プロパティとメソッドを呼び出すには -> を使用します。
self は現在のクラスでも使用されていますが、:: を使用して呼び出す必要があります。
parentはクラスで使用されます。
11. クラス内で定数を定義する方法、クラス内で定数を呼び出す方法、クラス外で定数を呼び出す方法。
答え: クラスの定数はメンバー定数でもあり、定数は変化しない量であり、定数値です。
定数を定義するには、キーワード const を使用します。
例: const PI = 3.1415326;
クラス内であってもクラス外であっても、定数へのアクセスは変数のアクセスとは異なります。
定数はオブジェクトをインスタンス化する必要はありません。定数にアクセスする形式は、クラス名に、呼び出すスコープ演算子記号 (二重コロン) を加えたものです。
つまり: クラス名:: クラス定数名;
12. スコープ演算子:: の使い方どのような状況で使用されますか?
答え: クラス定数を呼び出す
静的メソッドを呼び出す
13. __autoload() メソッドの動作原理は何ですか?
回答: このマジック関数を使用するための基本条件は、クラス ファイルのファイル名がクラスの名前と一致している必要があることです。
特定のクラスをインスタンス化するプログラムを実行する際、インスタンス化前にクラスファイルが導入されていない場合、__autoload()関数が自動的に実行されます。
この関数は、インスタンス化されたクラスの名前に基づいてクラスファイルのパスを検索し、クラスファイルのパスにクラスファイルが存在すると判断された場合、
クラスをロードするために include または require を実行します。ファイルがこのパスに存在しない場合、プログラムは実行を続けます。エラーが表示されます。
自動ロードマジック関数を使用すると、多くの include 関数や require 関数を記述する必要がなくなります。
4: ThinkPHP パート
トップに戻る
1. 一般的な PHP フレームワーク
答え: thinkPHP、yii、ZendFramework、CakePhp、sy
2. TP の単一エントリ ファイルを理解するにはどうすればよいですか? 回答: ThinkPHP は、プロジェクトのデプロイメントとアクセスに単一の入口モードを採用しており、どの機能が完了しても、プロジェクトには統一された (ただし、唯一であるとは限りません) 入口があります。すべてのプロジェクトはエントリー ファイルから始まり、すべてのプロジェクトのエントリー ファイルは類似していると言えます。 フレームワーク パス、プロジェクト パス、およびプロジェクト名を定義します (オプション)
デバッグ モードを定義して実行します。モード関連の定数 (オプション)
フレームワーク エントリー ファイルをロードする (必須)
Model (M): モデルの定義は Model クラスによって完了します。
コントローラー (C): アプリケーション コントローラー (コア コントローラー アプリ クラス) とアクション コントローラーは両方ともコントローラーの役割を引き受けます。アクション コントローラーはビジネス プロセスの制御を完了し、アプリケーション コントローラーはスケジュール制御を担当します。
View (V): View クラスとテンプレート ファイルで構成されており、テンプレートは 100% 分離されており、個別にプレビューおよび作成できます。
しかし実際には、ThinkPHP は M や V に依存していないため、モデルやビューがなくても動作します。 C にも依存しません。これは、ThinkPHP には、Action の上にマスター コントローラー、つまりアプリケーション全体のスケジューリングを担当する App コントローラーがあるためです。 C が存在しない場合、ビュー V が存在する必要があります。存在しない場合、ビュー V は完全なアプリケーションではなくなります。
つまり、ThinkPHP の MVC モデルは、MVC 自体に固執するのではなく、アジャイル開発の手段を提供するだけです。
4. SQLを最適化するには? (学生は次の説明を理解して、その後は自分の理解に従って一般的な意味を述べるだけで済みます)
答え: (1) 正しいストレージ エンジンを選択します
MySQL を例として、2 つのストレージ エンジン MyISAM と InnoDB を含めます。には長所と短所があります。
MyISAM は、多数のクエリを必要とする一部のアプリケーションには適していますが、多数の書き込み操作にはあまり適していません。フィールドを更新するだけの場合でも、テーブル全体がロックされ、読み取り操作が完了するまで他のプロセス (読み取りプロセスであっても) が動作できなくなります。さらに、MyISAM は SELECT COUNT(*) などの計算が非常に高速です。
InnoDB の傾向は非常に複雑なストレージ エンジンとなり、一部の小規模なアプリケーションでは MyISAM よりも遅くなるでしょう。ただし、「行ロック」をサポートしているため、書き込み操作が多い場合はより優れています。さらに、トランザクションなどのより高度なアプリケーションもサポートします。
(2) フィールドのデータ型を最適化する
列が小さいほど高速になるという 1 つの原則を覚えておいてください。テーブルに少数の列しかない場合 (ディクショナリ テーブル、構成テーブルなど)、主キーとして INT を使用する理由はありません。MEDIUMINT、SMALLINT、またはより小さい TINYINT を使用する方が経済的です。時間を追跡する必要がない場合は、DATETIME よりも DATE を使用する方がはるかに優れています。もちろん、拡張のための十分な余地も残しておく必要があります。
(3) 検索フィールドにインデックスを追加します
インデックスは必ずしも主キーや唯一のフィールドを意味するわけではありません。テーブル内に常に検索に使用するフィールドがある場合は、検索するフィールドが大きなテキスト フィールドでない限り、そのフィールドにインデックスを作成することをお勧めします。
(4) Select * の使用は避けてください。データベースから読み取られるデータが増えるほど、クエリは遅くなります。また、データベースサーバーとWEBサーバーが独立した2台のサーバーの場合、ネットワーク通信の負荷も大きくなります。データ テーブル内のすべてのフィールドをクエリする場合でも、* ワイルドカード文字を使用しないようにしてください。組み込みのフィールド除外定義を活用すると、より便利になる場合があります。
(5) VARCHAR の代わりに ENUM を使用します
ENUM 型は非常に高速でコンパクトです。実際には、TINYINT を保持しますが、文字列として表示されます。このようにして、このフィールドを使用して選択リストを作成するのが非常に完璧になります。たとえば、性別、民族、部門、ステータスなどのフィールドの値が限定されており、固定されている場合は、VARCHAR ではなく ENUM を使用する必要があります。
(6) 可能な限り NOT NULL を使用します
NULL 値を使用する特別な理由がない限り、フィールドは常に NOT NULL にしておく必要があります。 NULL は実際には余分なスペースを必要とするため、比較を行うとプログラムがより複雑になります。 もちろん、これは NULL を使用できないという意味ではありません。現実は非常に複雑なので、NULL 値を使用する必要がある状況が依然として存在します。
(7) 固定長テーブルは高速になります
テーブル内のすべてのフィールドが「固定長」の場合、テーブル全体が「静的」または「固定長」とみなされます。 たとえば、テーブルには VARCHAR、TEXT、BLOB 型のフィールドはありません。これらのフィールドのいずれかを含めている限り、テーブルは「固定長の静的テーブル」ではなくなり、MySQL エンジンは別の方法でテーブルを処理します。
固定長テーブルは MySQL の検索を高速化するため、パフォーマンスが向上します。これらの固定長により次のデータのオフセットの計算が容易になるため、当然読み取りも高速になります。また、フィールドが固定長でない場合、次のフィールドを検索するたびに、プログラムは主キーを検索する必要があります。
また、固定長テーブルはキャッシュと再構築が簡単です。ただし、唯一の副作用は、固定長フィールドは使用するかどうかに関係なく非常に多くのスペースを必要とするため、固定長フィールドによってスペースが浪費されることです。
5. ThinkPHP 3.0 アーキテクチャ 3 (コア + 動作 + ドライバー) の動作を理解するにはどうすればよいですか?
答え: Core + Behavior + Driver
TPの正式略称は: CBD
Core: フレームワークの核となるコードであり、TP自体はMVCの考え方に基づいて開発されたフレームワークです。
動作: 動作は、ThinkPHP の新しいバージョンのアーキテクチャにおいて決定的な役割を果たします。システム コアの上には多くのタグ拡張ビットがあり、各タグ位置は独自の独立した動作を順番に実行できます。これが動作拡張機能の誕生方法であり、多くのシステム機能も組み込みの動作拡張機能によって完成され、すべての動作拡張機能は置き換え可能であり、基礎となるフレームワークのアセンブリの基礎を形成します。
ドライバー: データベース ドライバー、キャッシュ ドライバー、タグ ライブラリ ドライバー、テンプレート エンジン ドライバー、および外部クラス拡張機能。
フレームワーク。実際、これは特定のアプリケーションの半完成品であり、独自のシステムを完成させるために選択して使用するコンポーネントのセットです。簡単に言えば、他人が設定した舞台を利用してパフォーマンスをすることです。さらに、フレームワークは一般的に成熟しており、継続的にアップグレードされるソフトウェアです。
6. 従来の構成とは何ですか?
回答: 従来の構成 前のページ 次のページ 規則は構成よりも重要です。これは、システムが従うべき重要な考え方です (システム ディレクトリにある Confconvention.php)。ほとんどの用途に応じて設定されています。したがって、アプリケーションプロジェクトの設定ファイルは、デフォルトの設定を完全に採用する場合は、従来の設定とは異なる設定パラメータまたは新しい設定パラメータを設定するだけで済む場合が多く、設定ファイルを定義する必要さえありません。
従来の設定ファイルはシステムによって自動的にロードされるため、プロジェクトにロードする必要はありません。
7. SQL インジェクションとは何ですか? (理解)
回答: SQL インジェクション攻撃は、ハッカーがデータベースを攻撃するために使用する一般的な方法の 1 つです。プログラマーの中には、コードを記述するときにユーザー入力データの正当性を判断しない人もいます。インジェクターはデータベース クエリ コードをフォームに入力して送信し、プログラムは送信された情報を結合して完全な SQL ステートメントを生成します。騙されて悪意のあるSQLコマンドを実行します。インジェクターは、プログラムから返された結果に基づいて機密データを取得し、サーバー全体を制御することもできます。これが SQL インジェクションです。
8. ThinkPHP はどのようにして SQL インジェクションを防止しますか? (理解)
答え: (1) より安全な方法である配列をクエリ条件に使用してみてください。 (2) 文字列クエリ条件を最後の手段として使用する必要がある場合は、前処理メカニズムを使用してください。データ フィールドの型検証。数値データ型の変換を強制できます (フィールド タイプの検証はバージョン 3.1 以降必須です)
(4) 自動検証および自動補完メカニズムを使用して、アプリケーションのカスタム フィルタリングを実行します。
(5) フィールド タイプを使用します。チェック、自動検証、および自動完了メカニズムにより、悪意のあるデータの入力が防止されます。
9. デバッグモードを有効にする方法は?デバッグモードの利点は何ですか?
回答: デバッグ モードをオンにするのは非常に簡単です。定数定義コードの行をエントリ ファイルに追加するだけです。
デバッグ モードをオンにします
開発フェーズが完了し、実稼働環境にデプロイした後、デバッグ モード定義コードを削除するだけで、デプロイメント モードに切り替えることができます。デバッグ モードをオンにすると、システムは最初にシステムのデフォルトのデバッグ構成ファイルをロードし、次にプロジェクトのデバッグ構成ファイルをロードします。 デバッグ モードの利点は次のとおりです。 ログをオンにすると、エラー情報とデバッグ情報が記録されます。デバッグを容易にするための詳細。テンプレートの変更はすぐに有効になります。フィールド キャッシュをオフにするため、データ テーブルのフィールド変更は (Windows プラットフォームでも) 厳密にチェックされます。 、Linux 導入の問題を事前に発見するのに役立ちます。開発、テスト、デモンストレーションなど、開発プロセスのさまざまな段階で使用すると、独立したプロジェクト構成ファイルをさまざまなアプリケーション モードに合わせて構成できます。
10. TP ではどのような構成モードがサポートされていますか?優先度?
回答: ThinkPHP は、プロジェクト構成に独自の階層構成モードを作成しました。その構成レベルは、従来の構成 -> プロジェクト構成 -> デバッグ構成 -> グループ構成 -> 拡張構成 -> に反映されます。設定
上記は設定ファイルのロード順序です。後の設定は同じ名前の以前の設定を上書きするため(有効でない場合)、優先順位は右から左になります。
11. TP の URL パターンは何ですか?デフォルトはどれですか?
回答: ThinkPHP は、通常モード、PATHINFO、REWRITE、互換モードを含む 4 つの URL モードをサポートしており、URL_MODEL パラメーターを設定することで定義できます。
デフォルトのモードは: PATHINFO モード、URL_MODEL を 1 に設定します
12 TP のシステム変数は何ですか?システム変数を取得するにはどうすればよいですか?
答え: システム変数を取得する方法:
アクションで次のメソッドを呼び出すだけです:$this->メソッド名 ("変数名", ["フィルターメソッド"], ["デフォルト値"])
13 . ThinkPHP フレームワークの D 関数と M 関数の違いは何ですか?
回答: M メソッドは、ユーザーが各データ テーブルのモデル クラスを定義しなくてもモデルをインスタンス化します。カスタム モデル クラスが存在する場合、D メソッドはモデル クラスを自動的に検出します。存在しない場合は、自動的に M メソッドを呼び出して Model 基本クラスをインスタンス化します。同時に、インスタンス化されたモデルは繰り返しインスタンス化されません (シングル ケース モード)。
5: スマートなテンプレート エンジン
トップに戻る
1. コンパイルとキャッシュの違いは何ですか?
smarty のコンパイルプロセスは、テンプレートを取得し、内部のタグを対応する php コードに置き換えることです。実際には、smarty のキャッシュは php と html を混合するプロセスです。手動でsmartyのキャッシュをオンにすると、正常なファイルが実行された後、同時に静的なhtmlページが生成され、再度アクセスするとhtmlファイルにアクセスすることになるので、効率の面では、より高いです
2. Smarty とは何ですか? Smarty の利点は何ですか?
Smarty は、PHP で書かれた PHP テンプレート エンジンです。その目的は、PHP プログラムをアーティストから分離し、プログラマーがプログラムの論理コンテンツを変更しても、アーティストのページ デザインに影響を与えないようにすることです。 - ページを変更しても、プログラムのプログラム ロジックには影響しません。これは、複数人で協力するプロジェクトでは特に重要です。 (マルチスタイルプログラムの開発も簡単です)
Smartyの利点
1. 他のテンプレートエンジンと比較して。
2. コンパイル型: Smarty で書かれたプログラムは、実行時に非テンプレート技術の PHP ファイルにコンパイルする必要があります
3. キャッシュ技術: ユーザーが最終的に見る HTML ファイルを静的 HTML ページにキャッシュできます
4. -inテクノロジー:smartyはプラグインをカスタマイズできます。
smarty が適さない場所
1. リアルタイムで更新する必要があるコンテンツ。たとえば、株式表示のように、頻繁なデータ更新が必要です
2.シンプルなためアーティストとプログラマーの両方が必要な小規模プロジェクト
3. {$smarty} を使用してテンプレートに変数を保持します
{$smarty.get.page} // で $_GET[ にアクセスするのと同様です。 phpスクリプトページ]
{smarty.cookies.}
{smarty.post.}
{smarty.session.}
{smarty.server.}
4. テンプレート内のphpの変数にアクセスします
phpにはシステムがありますスクリプト定数とカスタム定数の 2 種類があります。これら 2 つの定数は、Smarty テンプレートからもアクセスでき、変数が {$ を通じて保持されている限り、定数の値を直接出力できます。賢い}。テンプレート内の定数の出力例:
{$smarty.const._MY_CONST_VAL}
{$smarty.const.__FILE__}
5. Variable Mediator
Variable Mediator
6. PHP が mysql データベースにクエリを実行すると、文字化けが発生します。中国語の結果をクエリするときに表示されます。どうやって対処すればいいのでしょうか?
1. ファイルのプロパティ (名前を付けて保存)
2.ファイルメタ (ブラウザー解析を設定する場合)
3. データベースに接続するときのエンコーディング設定
4. PHP ファイルのヘッダー関数を使用してエンコーディングを決定する
7. キャッシュがオンになっている場合、Smarty は次のようにします。静的コピーも同時に生成します 設定時間内にhtmlページの有効期限が切れていない場合、再度アクセスする際にはhtmlファイルにアクセスすることになり、データベースを読み取る必要が減りますので、効率の面ではより高い。
8. Smarty の割り当てとテンプレートの読み込み
$Smarty->assign(name,value)
$Smarty->display(‘index.html’)
9. Marty テンプレート テクノロジーの用途は何ですか?
php と html を分離することで、アーティストとプログラマーは互いに干渉することなくそれぞれの業務を実行できます。
10. 主な Smarty 構成は何ですか?
1.smarty.class.php を導入します。3. デフォルトのコンパイル済みファイルのパスを再変更します。設定 ファイルのパス
6. デフォルトのキャッシュ パスを再変更します。7. キャッシュを有効にするかどうかを設定できます。
8. 左右の区切り文字を設定できます。
11. Smarty を使用する際に注意する必要がある点は何ですか?
Smarty は MVC の概念に基づいたテンプレート エンジンであり、ページ プログラムをビュー層とコントロール層の 2 つの部分に分割して実装します。
つまり、Smarty テクノロジーはユーザー UI を PHP コードから分離します。
このようにして、プログラマーとアーティストは、お互いに干渉することなく、それぞれの業務を実行できます。
12. Smarty を使用する場合は、次の問題に注意してください。
1. Smarty を正しく設定します。主に、smarty オブジェクトをインスタンス化し、smarty テンプレート ファイルのパスを設定する必要があります。
2. PHP コード スニペットは、smarty テンプレート ファイルでは使用できません。すべてのコメント、変数、関数は区切り文字の中に含めることができます。
A.{}
C. if else
E. リテラル 6. 二次開発システム (DEDE、ecshop)
二次開発についての理解
開発とは、簡単に言えば、既存のソフトウェアをカスタマイズして変更し、機能を拡張し、必要な機能を実現することです。一般的に、元のシステムの核となる部分は変更されません。
2. MVC
Model(モデル)データ処理。
コントローラーはプロセスを制御します。
MVCの概念とは何ですか?各レベルの主なタスクは何ですか?MVC (Model-View-Controller) は、ソフトウェア設計パターンまたはプログラミングのアイデアです。
M は Model モデル層、V は View 層 (表示層またはユーザー インターフェイス)、C はコントローラー層を指します。mvc を使用する目的は、M と V を分離して、1 つのプログラムで異なるユーザー インターフェイスを簡単に使用できるようにすることです。
Web サイト開発では、モデル層は通常、データベース テーブル情報の追加、削除、変更、確認を担当します。
ビュー層は、ページ コンテンツの表示を担当します。コントローラー層は、M と V の間を制御する役割を果たします。コントローラー層は、クラスのどのメソッドを呼び出すかを決定します。
実行後、コントローラー層は、結果がどのビュー層に割り当てられるかを決定します。
3. インストール後に二次開発プログラムにアクセスすると、いくつかの警告とエラーが発生しました
エラーに従って、サーバー構成パラメーターと Baidu を変更します
4. 実際には、オブジェクト指向のアプリケーションの使用とテンプレートの置き換えは、smarty の使用に似ています
5. どのような二次開発ツールを使用しましたか?
Dedecms phpcms ecshopは、基本的に基礎がしっかりしていれば学習するのは問題ありません。
6. PHPのような一次開発と二次開発のどちらを行うのが良いですか?
一般的に中小企業は効率化のため二次開発にcmsシステムを利用しています。もちろん、フレームワークの使い方を知っていて、著作権の問題を避けるために十分な時間があれば、一度に開発したい場合でも問題ありません。
7. 二次開発プロセスでは、多くのクラス間のメソッドアクセスはどのように伝達されますか?
クラスの継承ではなくオブジェクトの結合であり、インスタンス化されたオブジェクトはglobal
8を介して渡されます。 dedecmsがディレクトリを変更すると、バックグラウンドの特定の項目に入力できなくなります。
バックグラウンドコア設定を現在のプロジェクトディレクトリ名に変更します
9. dedecmsのカスタムモデルを理解していますか?
DreamWeaver システムにはコンテンツ モデルの概念があり、さまざまなコンテンツ モデルを使用して、さまざまなコンテンツ形式のサイトを構築できます: 通常の記事、フォト アルバム、ソフトウェア、製品、機密情報、トピック。 。システム独自のモデルを使用して、さまざまなタイプのサイトを構築できます。たとえば、アトラスを使用して画像サイトを構築したり、ソフトウェア モデルを使用してソフトウェア ダウンロード サイトを構築したりできます。
もちろん、システムに付属する上記のモデルはシステム モデルと呼ばれます。ユーザーは書籍や音楽アルバムなどのいくつかのモデルを自分で定義できます。これらのモデルをカスタマイズすることによってのみ、より多くのコンテンツ形式を備えたサイトを構築できます。
これは、現在のニーズの変化に適応するためにテーブル構造を自動的に追加することに相当します
10. テンプレートの設計と使用の概念については、次の概念を理解する必要があります
1. セクション (表紙) テンプレート:
を参照します。 Web サイトのホームページ、またはより重要なコラム カバー チャネルで使用されるテンプレート (通常は「index_identification ID.htm」という名前)。さらに、ユーザーが定義した単一のページまたはカスタム タグでも、セクション テンプレート タグをサポートするかどうかを選択できます。これがサポートされている場合、システムはセクション テンプレート マークアップ エンジンを使用してコンテンツを解析し、出力するか、特定のファイルを生成します。
2. リスト テンプレート:
Web サイトの特定の列にあるすべての記事のリストのテンプレートを指し、通常は「list_identification ID.htm」という名前が付けられます。
3. アーカイブ テンプレート:
記事テンプレートなどのドキュメント表示ページのテンプレートを表し、通常は「article_identification ID.htm」という名前が付けられます。
4. その他のテンプレート:
通常、システムには、ホームページ テンプレート、検索テンプレート、RSS、JS コンパイル機能テンプレートなどのテンプレートが含まれています。さらに、ユーザーはテンプレートをカスタマイズして任意のファイルを作成することもできます。
11. dede ではいくつのタグが使用されていますか?
リスト、コンテンツ、その他のタグはそのスコープ内でのみ使用でき、リスト タグはリスト内でのみ使用でき、コンテンツ タグはコンテンツ タグ内でのみ使用できます。
グローバルタグはすべてのページで使用できます
(例: dedesql.class.php); システム関数ライブラリ (common.func.php) に精通しています。 (extend.func .php); フロントエンド エントリ ファイル (common.inc.php) について理解します
7. WeChat パブリック プラットフォームの開発
トップに戻る
1. WeChat の操作メカニズム
使用される言語公式アカウントとphp間の通信: Xml
Weixin .phpで公開アカウントデータを受信する方法:$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//データを受信する XMLデータ
2.WeChatが現在提供しているメッセージタイプ
2. 7 つの基本メッセージ タイプ:
(1) テキスト メッセージ (テキスト) (2) 画像メッセージ (画像)
(4) ビデオ (ビデオ)
(5) 地理的位置。 (場所);
(6) リンクメッセージ (リンク);
(7) イベントプッシュ (イベント)
タイプ。さまざまな種類のメッセージを送信するときのデータ転送形式をマスターします
3. ファイル全体を文字列に読み取る関数は
simplexml_load_string( )
文字列を配列に変換する関数は__explode_________、配列を文字列に変換する関数は___implode________です。URL文字列をエンコードする文字列は___urlencode________です。
5 Sprintf関数の役割
(2) コードのエラー、原因の推測方法
コードが正しいか、どこを変更するかを確認します データを出力して確認することができます。 phpを使ってファイルを操作
$myfile = fopen("newfile.txt", "w");
$txt ="aaaaaaaaaa";
fwrite($myfile, $txt);
fclose($myfile);
7カスタムメニューのイベントプッシュ
クリックしてリンクに移動
コードをスキャンしてイベントをプッシュコードをスキャンしてプッシュしてポップアップ
システムの写真を撮影して送信するイベントをポップアップ
WeChat アルバム送信者
地理的位置セレクターのポップアップ
8. トークン
。
1. PHP + MYSQL を方向性として、smarty テンプレート エンジン、ThinkPHP フレームワーク、WeChat パブリック プラットフォーム開発、DEDE、ecshop およびその他の二次開発システムに習熟し、データベースの観点からオブジェクト指向をある程度理解していること。 MYSQL、MSSQL などのデータベースに精通していること。Linux での PHP 開発に精通していること
2. フロントエンド技術: DIV+CSS Web ページ レイアウト、JavaScript、JQuery フレームワーク、AJAX 技術、Photoshop 画像処理に精通していること
3.のプロジェクト開発経験、smarty を使用して「XXXXXXXX」を開発、ThinkPHP で「XXXXXXXX」を開発、WeChat パブリック プラットフォームを使用して「雇用サービス ネットワーク」のパブリック アカウントを開発、DreamWeaver システムを使用して企業 Web サイトなどを開発しました。