ホームページ  >  記事  >  バックエンド開発  >  PHP 面接の主要な質問の共有 (1)

PHP 面接の主要な質問の共有 (1)

小云云
小云云オリジナル
2018-03-22 13:38:491685ブラウズ

この記事では主に PHP に関する面接の質問をいくつか紹介します。これらの PHP の面接の質問が役立つことを願っています。

1. PHP 言語の大きな利点の 1 つはクロスプラットフォームです。クロスプラットフォームとは何ですか?

PHP の実行環境の最適な組み合わせは、Apache+MySQL+PHP です。この実行環境は、さまざまなオペレーティング システム (Windows、Linux など) 上で構成でき、オペレーティング システムによって制限されないため、このように呼ばれます。クロスプラットフォーム

2. WEB開発におけるデータ入稿の方法は何通りありますか?違いは何ですか? Baidu はどの方法を使用しますか?

Get メソッドと post メソッド

の違い: 1. Get はサーバーからデータを取得し、post はデータをサーバーに送信します

2. Get によって渡された値は URL に表示されますが、post によって渡された値は表示されません。 URL

4. Getで渡される値は通常2KB以内、post値のサイズはphp.iniで設定可能

5. Getのセキュリティは低くなく、Postのセキュリティは高くなりますが、実行効率はPostよりも高くなります。

推奨事項: 1. Get セキュリティ 機密情報が含まれている場合は、Post メソッドを使用することをお勧めします。 2. データには Get メソッドを使用することをお勧めします。クエリ; データの追加、変更、削除には Post メソッドを使用することをお勧めします

URL からわかるため、Get メソッドを使用します

3. どのフレームワーク、テンプレート エンジン、システムなどを理解します。 PHP

フレームワークの説明: zendframe、CI、Yiiなど、多くのフレームワークがあります。 私たちが学んだことは、thinkphp

テンプレートエンジンです: 教科書には、私たちが学んだスマート

システムがたくさんあります: Kangsheng の製品 (uchome、supesite、discuzX など)、Empire system、DEDE (Dream Weaver)、ecshop など、たくさんあります。あなたが学んだのは DEDECMS と Ecshop です

4。 Web フロントエンド技術を習得しましたか?

p+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 文字列形式の文字列です。 assoc このパラメータが TRUE の場合、オブジェクトの代わりに配列が返されます。

Json_encode: PHP 変数を JSON 形式に変換します

14. PHP が配列を処理するための一般的な関数は何ですか? (関数の「パラメータ」と「戻り値」に注目してください)

①array() は配列を作成します; ②count() は配列内の要素の数を返します; ③array_push() は 1 つ以上の要素を配列の末尾に挿入しますarray (push); ④array_column() は入力配列の 1 つの列の値を返します; ⑤array_combine() は 2 つの配列を結合して新しい配列を作成します; ⑥array_reverse() は配列を逆順に返します;配列内; ⑧in_array( ) 指定された値が配列内に存在するかどうかを確認します

15. PHP で文字列を処理するための一般的な関数は何ですか? (関数の「パラメータ」と「戻り値」に注目してください)

①trim() は文字列の両側の空白文字と他の文字を削除します。②substr_replace()は文字列の一部を別の文字列に置き換えます。③substr_count()は文字列の一部を返します。 ⑤ strto lower() は文字列を小文字に変換します; ⑥ strtoupper() は文字列を大文字に変換します; ⑧ strrchr() は別の文字列内の文字列を検索します。別の文字列内の最初の文字列 (大文字と小文字を区別); strrev() は文字列の長さを返します。 str_replace() は文字列内の一部の文字を置き換えます (大文字と小文字を区別します)。 ) 1 つ以上の文字列を出力します;explore() は文字列を配列に分割します; is_string() は文字列から始まります; mb_substr() は文字列から HTML タグを削除します。中国語と英語の文字

16. PHP の処理時間によく使用される関数は何ですか? (関数の「パラメーター」と「戻り値」に注目してください)

date_default_timezone_get() はデフォルトのタイムゾーンを返します。

date_default_timezone_set() はデフォルトのタイムゾーンを設定します。

date() は現地時間/日付をフォーマットします。

getdate() は日付/時刻情報を返します。

gettimeofday() は現在の時刻情報を返します。

microtime() は現在時刻のマイクロ秒数を返します。

mktime() は日付の Unix タイムスタンプを返します。

strtotime() は、英語のテキストの日付または時刻の記述を Unix タイムスタンプに解析します。

time() は、現在の時刻の Unix タイムスタンプを返します。

17. PHP がデータベースを処理するために使用する一般的な関数は何ですか? (関数の「パラメータ」と「戻り値」に注目してください)

これは非常に重要ですので、PHPマニュアルを参照してよく読んでください

18. ファイルを操作するためによく使用されるPHPの関数は何ですか? (関数の「パラメータ」と「戻り値」に注目)

①ファイルを開く; ②ファイルを読み取る; ⑤ファイルを変更する; ⑥ファイルを閉じる;非常に重要です。仕事でキャッシュや静的ファイルを生成するためによく使用されます。PHP のマニュアルを参照してよく確認してください。 (関数の「パラメータ」と「戻り値」に注目してください)

①ディレクトリを開く; ②ディレクトリを削除する; ④ディレクトリを作成する; ⑥ディレクトリを閉じる; この項目は非常に重要です。仕事では、アップロードしたファイルのディレクトリの作成や削除、キャッシュや静的ページのディレクトリの作成や削除によく使用されます

3. オブジェクト指向の部分。 -指向? (理解してから答えてください)

答え: オブジェクト指向 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 つの側面の場合は、抽象化を追加します。

以下の説明は理解のためのものです:

カプセル化:

カプセル化は、ソフトウェア コンポーネントの優れたモジュール性を確保するための基礎であり、プログラムの相互依存性の影響を防ぐためにソフトウェア コンポーネントの高い結合性と低い結合性を実現することです。今後の変更。

継承:

クラスを定義して実装するときは、既存のクラスに基づいて行うことができ、この既存のクラスで定義されたコンテンツを独自のコンテンツとして使用したり、新しいコンテンツを追加したり、元のコンテンツのメソッドを変更したりすることができます。特別なニーズにより適したものにする、これが継承です。継承は、サブクラスが親クラスのデータとメソッドを自動的に共有するメカニズムであり、ソフトウェアの再利用性と拡張性を向上させるクラス間の関係です。

ポリモーフィズム:

ポリモーフィズムとは、プログラム内で定義された参照変数が指す特定の型と、参照変数を介して発行されるメソッド呼び出しがプログラミング中に決定されず、プログラムの実行中に決定されることを意味します。参照 変数が指すクラス インスタンス オブジェクトと、参照変数によって発行されるメソッド呼び出しを実装するクラスは、プログラムの実行中に決定する必要があります。

抽象化:

抽象化とは、いくつかの物事の類似点と共通点を見つけて、それらをクラスに分類することです。このクラスでは、これらの物事の類似点と共通点のみが考慮され、現在のトピックに無関係なものは無視されます。および目標。現在の目標に関連する側面に焦点を当てます。たとえば、アリとゾウを見て、それらがどのように似ているかを想像できる場合、それは抽象化です。

6. 抽象クラスとインターフェイスの概念と違いは何ですか?

答え: 抽象クラス: これはインスタンス化できず、他のクラスの親クラスとしてのみ使用できる特別なクラスです。 abstract キーワードを使用して宣言します。

特殊な抽象クラスとインターフェース宣言を使用した特殊なクラスです。

(1) 抽象クラスの操作は継承キーワード extends によって実装され、インターフェイスの使用はimplements キーワードによって実装されます。

(2) データのカプセル化を実現できる抽象クラスにはデータメンバが存在しますが、インターフェースにはデータメンバがありません。

(3) 抽象クラスはコンストラクターを持つことができますが、インターフェイスにはコンストラクターがありません。

(4) 抽象クラスのメソッドは、private、protected、および public キーワードを使用して変更できます (抽象メソッドをプライベートにすることはできません)。一方、インターフェイス内のメソッドは、public キーワードを使用してのみ変更できます。

(5) クラスは 1 つの抽象クラスからのみ継承でき、クラスは複数のインターフェイスを同時に実装できます。

(6) 抽象クラスはメンバー メソッドの実装コードを持つことができますが、インターフェイスはメンバー メソッドの実装コードを持つことができません。

7. コンストラクター、デストラクター、およびその機能とは何ですか?

答え: コンストラクター (メソッド) は、オブジェクトの作成後にオブジェクトによって自動的に呼び出される最初のメソッドです。これは宣言されたすべてのクラスに存在し、特別なメンバー メソッドです。その機能は、いくつかの初期化タスクを実行することです。 Php では、__construct() を使用してコンストラクター メソッドを宣言しますが、宣言できるのは 1 つだけです。

デストラクター (メソッド) は、コンストラクターの逆です。オブジェクトが破棄される前に、オブジェクトによって自動的に呼び出される最後のメソッドです。これは PHP5 で新しく追加されたコンテンツで、ファイルを閉じたりメモリを解放したりするなど、オブジェクトを破棄する前に特定の操作を実行するために使用されます。

8. 親クラスのメソッドをオーバーロードする方法と例

答え: オーバーロードとは、親クラスのメソッドをオーバーライドすること、つまり、サブクラスのメソッドを使用して親クラスから継承したメソッドを置き換えることを意味します。 、リライトメソッドとも呼ばれます。

親クラスのメソッドをオーバーライドする鍵は、メソッド名、パラメーター、戻り値の型を含む、サブクラスの親クラスに同じメソッドを作成することです。 PHP では、メソッドの名前のみが同じである必要があります。

9. よく使われる魔法の方法は何ですか?たとえば

回答: PHP では、2 つのアンダースコア (__) で始まるメソッドはマジック メソッドとして予約されると規定されているため、既存のマジック メソッドをオーバーロードする場合を除き、関数名を __ で始めないことをお勧めします。

__construct() は、クラスをインスタンス化するときに自動的に呼び出されます。

__destruct() は、クラスオブジェクトが使用されるときに自動的に呼び出されます。

__set() は、未定義のプロパティに値を割り当てるときに呼び出されます。

__get() は、未定義のプロパティが呼び出されたときに呼び出されます。

__isset() は isset() 関数または empty() 関数を使用するときに呼び出されます。 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 は、プロジェクトのデプロイメントとアクセスに単一の入口モードを採用しており、どの機能が完了しても、プロジェクトには統一された (ただし、唯一であるとは限りません) 入口があります。すべてのプロジェクトはエントリ ファイルから開始され、すべてのプロジェクトのエントリ ファイルは類似していると言えます。 エントリ ファイルには主に以下が含まれます:

フレームワーク パス、プロジェクト パス、およびプロジェクト名を定義します (オプション)

デバッグ モードを定義します。および実行モード関連の定数 (オプション)

フレームワーク エントリ ファイルのロード (必須)

3. ThinkPHP の MVC 階層化とは何ですか? (理解)

回答: MVC は、アプリケーションの論理層とプレゼンテーション層を分離する方法です。 ThinkPHP も MVC 設計パターンに基づいています。 MVC は単なる抽象的な概念であり、特に明確な規定はありません。 ThinkPHP における MVC の階層化は、大まかに以下に反映されています。

Model (M): モデルの定義は Model クラスによって完了します。

コントローラー (C): アプリケーション コントローラー (コア コントローラー アプリ クラス) とアクション コントローラーは両方ともコントローラーの役割を引き受けます。アクション コントローラーはビジネス プロセスの制御を完了し、アプリケーション コントローラーはスケジュール制御を担当します。

View (V): View クラスとテンプレート ファイルで構成されており、テンプレートは 100% 分離されており、個別にプレビューおよび作成できます。

しかし実際には、ThinkPHP は M や V に依存していないため、モデルやビューがなくても動作します。 C にも依存しません。これは、ThinkPHP には、Action の上にマスター コントローラー、つまりアプリケーション全体のスケジューリングを担当する App コントローラーがあるためです。 C が存在しない場合、ビュー V が存在する必要があります。存在しない場合、ビュー V は完全なアプリケーションではなくなります。

つまり、ThinkPHP の MVC モデルは、MVC 自体に固執するのではなく、アジャイル開発の手段を提供するだけです。

5. ThinkPHP 3.0 アーキテクチャ 3 (コア + 動作 + ドライバー) の動作を理解するにはどうすればよいですか?

答え: コア + ビヘイビア + ドライバー

TP の正式な略称は: CBD

コア: フレームワークの核となるコードであり、TP 自体は MVC の考えに基づいて開発されたフレームワークです。

動作: 動作は、ThinkPHP の新しいバージョンのアーキテクチャにおいて決定的な役割を果たします。システム コアの上には多くのタグ拡張ビットがあり、各タグ位置が独自の独立した動作を順番に実行できます。これが動作拡張機能の誕生方法であり、多くのシステム機能も組み込みの動作拡張機能によって完成され、すべての動作拡張機能は置き換え可能であり、基礎となるフレームワークのアセンブリの基礎を形成します。

ドライバー: データベースドライバー、キャッシュドライバー、タグライブラリドライバー、テンプレートエンジンドライバー、および外部クラス拡張機能。

フレームワーク。実際、これは特定のアプリケーションの半完成品であり、独自のシステムを完成させるために選択して使用するコンポーネントのセットです。簡単に言えば、他人が設定した舞台を利用してパフォーマンスをすることです。さらに、フレームワークは一般的に成熟しており、継続的にアップグレードされるソフトウェアです。

6. 従来の構成とは何ですか?

答え: 従来の構成 前のページ 次のページ 規則は構成よりも重要です。これは、システムが従うべき重要な考え方です (システム ディレクトリにある Confconvention.php)。ほとんどの用途に応じて設定されます。デフォルトの構成が作成されます。したがって、アプリケーションプロジェクトの設定ファイルは、デフォルトの設定を完全に採用する場合は、従来の設定とは異なる設定パラメータまたは新しい設定パラメータを設定するだけで済む場合が多く、設定ファイルを定義する必要さえありません。

従来の設定ファイルはシステムによって自動的にロードされるため、プロジェクトにロードする必要はありません。

7. SQL インジェクションとは何ですか? (了解)

回答: SQL インジェクション攻撃は、ハッカーがデータベースを攻撃するために使用する一般的な手段の 1 つです。プログラマーの中には、コードを記述するときにユーザー入力データの正当性を判断しない人もいます。インジェクターはデータベース クエリ コードをフォームに入力して送信し、プログラムは送信された情報を結合して完全な SQL ステートメントを生成します。騙されて悪意のあるSQLコマンドを実行します。インジェクターは、プログラムから返された結果に基づいて機密データを取得し、サーバー全体を制御することもできます。これが SQL インジェクションです。

8. ThinkPHP はどのようにして SQL インジェクションを防止しますか? (理解)

答え: (1) より安全な方法である配列をクエリ条件に使用してみてください

(2) 文字列クエリ条件を使用する必要がある場合は、前処理メカニズムを使用してください

(3) データを有効にします。フィールド タイプの検証では、数値データ タイプの変換を強制できます。(フィールド タイプの検証はバージョン 3.1 以降必須です)

(4) 自動検証および自動補完メカニズムを使用して、アプリケーションのカスタム フィルタリングを実行します。悪意のあるデータ入力を回避するための型チェック、自動検証、および自動完了メカニズム。

9. デバッグモードを有効にするにはどうすればよいですか?デバッグモードの利点は何ですか?

答え: デバッグ モードをオンにするのは非常に簡単です。定数定義コードの行をエントリ ファイルに追加するだけです:

//デバッグ モードをオンにする

define('APP_DEBUG ', true);

//フレームワーク エントリ ファイルをロードします

require './ThinkPHP/ThinkPHP.php';

開発フェーズが完了して運用環境にデプロイした後は、デバッグ モード定義を削除するだけで済みますデプロイメントモードに切り替えるコード。デバッグ モードをオンにすると、システムはまずシステムのデフォルトのデバッグ構成ファイルをロードし、次にプロジェクトのデバッグ構成ファイルをロードします。 デバッグ モードの利点は次のとおりです:

ログをオンにすると、エラー情報とデバッグ情報が記録されます。デバッグを容易にするために詳細に記録する;

テンプレート キャッシュをオフにすると、テンプレートの変更はすぐに有効になります。

SQL ログを記録して SQL 分析を容易にします。

フィールド キャッシュをオフにすると、データ テーブルのフィールドの変更は影響を受けませんキャッシュ;

ファイルの大文字と小文字を厳密にチェックします (Windows プラットフォームでも))、Linux 導入の問題を事前に発見するのに役立ちます。

は、開発、テスト、デモンストレーション、その他の必要な状況を含む、開発プロセスのさまざまな段階で便利に使用できます。独立したプロジェクト構成ファイルを使用して、さまざまなアプリケーション モードを構成できます。

10. TP ではどのような構成モードがサポートされていますか?優先度?

回答: ThinkPHP は、プロジェクト構成に独自の階層構成モードを作成しました。その構成レベルは、

従来の構成 -> プロジェクト構成 -> デバッグ構成 -> グループ構成 -> 拡張構成 -> に反映されます。 ;動的設定

上記は設定ファイルのロード順序です。後の設定は同じ名前の以前の設定を上書きするため(有効にならない場合)、優先順位は右から左になります。

11. TP の URL パターンは何ですか?デフォルトはどれですか?

回答: ThinkPHP は、通常モード、PATHINFO、REWRITE、互換モードを含む 4 つの URL モードをサポートしており、URL_MODEL パラメーターを設定することで定義できます。

デフォルトのモードは: PATHINFO モード、URL_MODEL を 1 に設定します

12 TP のシステム変数は何ですか?システム変数を取得するにはどうすればよいですか?

回答: システム変数を取得する方法:

Action で次のメソッドを呼び出すだけです:

$this->メソッド名 ("変数名", ["フィルターメソッド"], ["デフォルト値" ]) )

13. ThinkPHP フレームワークの D 関数と M 関数の違いは何ですか?

回答: M メソッドでは、モデルをインスタンス化するときにユーザーが各データ テーブルにモデル クラスを定義する必要はありません。カスタム モデル クラスが存在する場合、D メソッドはモデル クラスを自動的に検出します。存在しない場合は、カスタム モデル クラスが自動的に呼び出され、Model 基本クラスがインスタンス化されます。同時に、インスタンス化されたモデルは繰り返しインスタンス化されません (シングル ケース モード)。

トップに戻る

5. Smarty テンプレート エンジン

1. コンパイルとキャッシュの違いは何ですか?

Smarty のコンパイルプロセスは、テンプレートを取得し、内部のタグを対応する php コードに置き換えることです。これは実際には、php と HTML を混合するプロセスです

。キャッシュはコンパイルされたファイルを実行し、同時に静的な HTML ページを生成するため、再度アクセスすると HTML ファイルにアクセスするため、効率の点ではより高くなります

2. Smarty とは何ですか? Smarty の利点は何ですか?

Smarty は、PHP プログラムをアーティストから分離して、プログラマーが論理コンテンツを変更できるようにすることです。アーティストのページに影響を与えずにプログラムの変更を行うことができます。デザイナーやアーティストは、ページを再変更するときにプログラムのプログラム ロジックに影響を与えません。これは、複数人によるコラボレーション プロジェクトでは特に重要です。 (マルチスタイルプログラムの開発も簡単です)

Smartyの利点

1. 他のテンプレートエンジンと比較して高速です。

2. コンパイル済みタイプ: Smarty を使用して作成されたプログラムは、実行時に非テンプレート テクノロジの PHP ファイルにコンパイルする必要があります

3 キャッシュ技術: ユーザーが最終的に見る HTML ファイルを静的 HTML ページにキャッシュできます。

4. プラグイン技術: Smarty はプラグインをカスタマイズできます。

smartyの使用には適していません

1. リアルタイムで更新する必要があるコンテンツ。たとえば、在庫表示のように、頻繁なデータ更新が必要です。 2. 小規模なプロジェクト。シンプルなため、アーティストとプログラマーの両方が必要な小規模プロジェクト

3.テンプレート内の変数を保持するには、{$smarty} を使用します

{$smarty.get.page} // $_GET[page] へのアクセスと同様です

{smarty.cookies.}

{smarty.post.

{smarty.session.}

{smarty.server.}

4. テンプレート内の php の変数にアクセスする

php スクリプトには 2 種類のシステム定数とカスタム定数があります。 Smarty テンプレートでアクセスされ、変数が {$smarty} を通じて保持されている限り、定数の値を PHP から割り当てる必要はありません。テンプレート内の定数の出力例:

{$smarty.const._MY_CONST_VAL}

{$smarty.const.__FILE__}

5. 変数修飾子

{$var|modifier1|modifier2| .. .....}

<{$str}>

<{$str|capitalize}><{*最初の文字は大文字です*}>

<{$str|upper}><{*すべて大文字*}>

<{$str| lower}><{*すべて小文字*}> br<

<{$str| lower|upper}><{*すべて大文字、左から右に調整*}>

<{$leg|truncate}> {*文字列インターセプト、デフォルト 80 文字*}>

<{$leg|truncate:10}><{*文字列インターセプト、...3 文字を含む最初の 10 文字 *} >

6. php が mysql データベースにクエリを実行すると、中国語の結果が文字化けします。どうやって対処すればいいのでしょうか? ? ? ?

1. ファイルのプロパティ (名前を付けて保存)

2.ファイルメタ (ブラウザ解析を設定する場合)

3. データベース接続時のエンコーディング設定

4. PHP ファイルのヘッダー関数を使用してエンコーディングを決定する

7. キャッシュする場合を有効にすると、smarty 同時に静的 html ページが生成され、設定時間内に有効期限が切れなければ、再度アクセスすると html ファイルにアクセスすることになり、データベースを読み取る必要が減ります。効率の点では、それはより高いです。

8. Smarty の割り当てとテンプレートの読み込み

$Smarty->assign(name,value)

$Smarty->display('index.html')

9. Smarty テンプレート技術とはの目的は?

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 コード スニペット、すべてのコメント、および変数を表示するには、assign 割り当てを使用します。 Smarty テンプレート ファイルでは関数を区切り文字内に含めることはできません。

A.{}

B. if else

E. トップに戻る

6. そうです。二次開発についての理解

二次開発とは、簡単に言うと、既存のソフトウェアをカスタマイズして修正し、機能を拡張し、必要な機能を実現することです。一般的に、元のシステムのコアは変更されません。

2. MVC

モデルデータ処理。

テンプレート表示を表示します。

コントローラーはプロセスを制御します。

MVC の概念とは何ですか?各レベルの主なタスクは何ですか?

MVC (Model-View-Controller) は、ソフトウェア設計パターンまたはプログラミングのアイデアです。

M はモデル層、V はビュー層 (表示層またはユーザー インターフェイス)、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 ではいくつのタグが使用されていますか?

リストタグとコンテンツタグはそのスコープ内でのみ使用でき、リストタグはリスト内でのみ使用でき、コンテンツタグはコンテンツタグ内でのみ使用できます。

グローバルタグはすべてのページで使用できます

12.共通クラス ライブラリ

(例: dedesql.class.php) に精通している; システム関数ライブラリ (common.func.php) に精通している; フロントエンド エントリに精通しているファイル (common.inc. php)

トップに戻る

7. WeChat パブリック プラットフォームの開発

1. WeChat の動作メカニズム

公式アカウントと php の間の通信に使用される言語: //データの受信 XML データ

2. メッセージ タイプ

WeChat は現在 7 つの基本的なメッセージ タイプを提供しています。

(1) テキストメッセージ (テキスト);

(2) 画像メッセージ (画像)

(4) ビデオ (ビデオ)

(5) 地理的位置 (場所) ;

(6) リンクメッセージ (リンク);

(7) イベントプッシュ (イベント)

タイプ。さまざまな種類のメッセージを送信するときのデータ転送形式をマスターする

4. ファイル全体を文字列に読み取る関数は

File_get_contents

5 です。オブジェクト

simplexml_load_string( )

文字列を配列に変換する関数は__explode_________、配列を文字列に変換する関数は___implode________です。

URL文字列をエンコードする文字列は____urlencode________です。

6 Sprintf関数の役割

こちらからマニュアルをご確認いただけます。

7. WeChat公式アカウントがサービスを提供できないのはなぜですか?データ 1. ネットワークの理由、データ インターフェイスの理由

2. コード エラー、理由の推測方法

どこを確認するか、コードが正しいかどうか

は確認するデータを出力できます。 phpを使ってファイルを操作します

$myfile = fopen("newfile.txt", "w");

$txt = "aaaaaaaaaa";

fwrite($myfile, $txt);

fclose($ myfile );

8. カスタムメニューイベントプッシュ

ジャンプリンクをクリックします

写真のイベント

がポップアップします WeChatフォトアルバム送信者のイベント

ポップアップ場所セレクターのイベント

9.トークンの役割

WeChatサーバーとPHPサーバー間のセキュリティ検証に使用されるセキュリティメカニズムの検証

10. Appidとシークレットの役割

APIインターフェース(メニュー操作など)をリクエストする場合、2つの値を渡す必要があります。 appid と secrect を使用してアプリケーションの認証コードを取得します

トップに戻る

8. 習得したテクノロジーの説明:

1. PHP+MYSQL を使用する 方向性としては、smarty テンプレート エンジンに習熟すること、ThinkPHP フレームワーク、WeChat パブリック プラットフォーム開発、DEDE、ecshop およびその他の二次開発システム、およびデータベースに関して一定の理解を持ち、MYSQL、MSSQL およびその他のデータベースに精通している。

2. フロントエンド技術: p+CSS Web ページレイアウト、JavaScript、JQuery フレームワーク、AJAX 技術、Photoshop 画像処理に精通しています

3. 1 年間のプロジェクト開発経験、smarty を使用して「XXXXXXXX」を開発し、ThinkPHP を開発しました。 「XXXXXXXX」は、WeChat パブリック プラットフォームを使用して「雇用サービス ネットワーク」のパブリック アカウントを開発し、DreamWeaver システムを使用して企業 Web サイトなどを開発しました。

1. PHP 言語の主な利点の 1 つは、クロス-プラットフォーム。クロスプラットフォームとは何ですか?

PHP の実行環境の最適な組み合わせは、Apache+MySQL+PHP です。この実行環境は、さまざまなオペレーティング システム (Windows、Linux など) 上で構成でき、オペレーティング システムによって制限されないため、クロスと呼ばれます。 -platform

2. WEB 開発中にデータを送信する方法は何通りありますか?違いは何ですか? Baidu はどの方法を使用しますか?

Get メソッドと post メソッド

の違い: 1. Get はサーバーからデータを取得し、post はデータをサーバーに送信します

2. Get によって渡された値は URL に表示されますが、post によって渡された値は表示されません。 URL

4. Getで渡される値は通常2KB以内、post値のサイズはphp.iniで設定可能

5. Getのセキュリティは低くなく、Postのセキュリティは高くなりますが、実行効率はPostよりも高くなります。

推奨事項: 1. Get セキュリティ 機密情報が含まれている場合は、Post メソッドを使用することをお勧めします。 2. データには Get メソッドを使用することをお勧めします。クエリ; データの追加、変更、削除には Post メソッドを使用することをお勧めします

URL からわかるため、Get メソッドを使用します

3. どのフレームワーク、テンプレート エンジン、システムなどを理解します。 PHP

フレームワークの説明: zendframe、CI、Yiiなど、多くのフレームワークがあります。 私たちが学んだことは、thinkphp

テンプレートエンジンです: 教科書には、私たちが学んだスマート

システムがたくさんあります: Kangsheng の製品 (uchome、supesite、discuzX など)、Empire system、DEDE (Dream Weaver)、ecshop など、たくさんあります。あなたが学んだのは DEDECMS と Ecshop です

4。 Web フロントエンド技術を習得しましたか?

p+CSS Web ページレイアウト、JavaScript、jQuery フレームワーク、Photoshop 画像処理に精通しています

5. AJAX の利点は何ですか? 6. プログラムにとってセキュリティは重要です。開発中にセキュリティメカニズムに注意を払う必要がありますか?

①リモート送信を防止する; ②SQL インジェクションを防止し、特殊コードをフィルタリングする; ③登録マシンのフラッディングを防止し、検証コードを使用する;

7.

① SQL ステートメントを最適化し、クエリ ステートメントで select * を使用しないようにし、どのフィールドを使用するかを減らし、テーブル接続で置き換えることができます。② データ テーブルにインデックスを作成します。頻繁に使用されるプログラム 受信したデータはキャッシュされます

8. PHP は他のデータベースでも使用できますか?

PHP与MYSQL数据库是最优搭配,当然PHP也可以去其它的数据库搭配使用,例如MSSQL等,PHP中预留了操作MSSQL的函数,只要开启就可以使用

9. 现在编程中经常采取MVC三层结构,请问MVC分别指哪三层,有什么优点?

MVC三层分别指:业务模型、视图、控制器,由控制器层调用模型处理数据,然后将数据映射到视图层进行显示,优点是:①可以实现代码的重用性,避免产生代码冗余;②M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式

10. 对json数据格式的理解?

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,json数据格式固定,可以被多种语言用作数据的传递

PHP中处理json格式的函数为json_decode( string $json [, bool $assoc ] ) ,接受一个 JSON格式的字符串并且把它转换为PHP变量,参数json待解码的json string格式的字符串。assoc当该参数为TRUE时,将返回array而非object;

Json_encode:将PHP变量转换成json格式

14. PHP处理数组的常用函数?(重点看函数的‘参数’和‘返回值’)

①array()创建数组;②count()返回数组中元素的数目;③array_push()将一个或多个元素插入数组的末尾(入栈);④array_column()返回输入数组中某个单一列的值;⑤array_combine()通过合并两个数组来创建一个新数组;⑥array_reverse()以相反的顺序返回数组;⑦array_unique()删除数组中的重复值;⑧in_array()检查数组中是否存在指定的值;

15. PHP处理字符串的常用函数?(重点看函数的‘参数’和‘返回值’)

①trim() は文字列の両側の空白文字と他の文字を削除します。②substr_replace()は文字列の一部を別の文字列に置き換えます。③substr_count()は文字列の一部を返します。 ⑤ strto lower() は文字列を小文字に変換します; ⑥ strtoupper() は文字列を大文字に変換します; ⑧ strrchr() は別の文字列内の文字列を検索します。別の文字列内の最初の文字列 (大文字と小文字を区別); strrev() は文字列の長さを返します。 str_replace() は文字列内の一部の文字を置き換えます (大文字と小文字を区別します)。 ) 1 つ以上の文字列を出力します;explore() は文字列を配列に分割します; is_string() は文字列から始まります; mb_substr() は文字列から HTML タグを削除します。中国語と英語の文字

16. PHP の処理時間によく使用される関数は何ですか? (関数の「パラメーター」と「戻り値」に注目してください)

date_default_timezone_get() はデフォルトのタイムゾーンを返します。

date_default_timezone_set() はデフォルトのタイムゾーンを設定します。

date() は現地時間/日付をフォーマットします。

getdate() は日付/時刻情報を返します。

gettimeofday() は現在の時刻情報を返します。

microtime() は現在時刻のマイクロ秒数を返します。

mktime() は日付の Unix タイムスタンプを返します。

strtotime() は、英語のテキストの日付または時刻の記述を Unix タイムスタンプに解析します。

time() は、現在の時刻の Unix タイムスタンプを返します。

17. PHP がデータベースを処理するために使用する一般的な関数は何ですか? (関数の「パラメータ」と「戻り値」に注目してください)

これは非常に重要ですので、PHPマニュアルを参照してよく読んでください

18. ファイルを操作するためによく使用されるPHPの関数は何ですか? (関数の「パラメータ」と「戻り値」に注目)

①ファイルを開く; ②ファイルを読み取る; ⑤ファイルを変更する; ⑥ファイルを閉じる;非常に重要です。仕事でキャッシュや静的ファイルを生成するためによく使用されます。PHP のマニュアルを参照してよく確認してください。 (関数の「パラメータ」と「戻り値」に注目してください)

①ディレクトリを開く; ②ディレクトリを削除する; ④ディレクトリを作成する; ⑥ディレクトリを閉じる; この項目は非常に重要です。仕事では、アップロードしたファイルのディレクトリの作成や削除、キャッシュや静的ページのディレクトリの作成や削除によく使用されます

3. オブジェクト指向の部分。 -指向? (理解してから答えてください)

答え: オブジェクト指向 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 つの側面の場合は、抽象化を追加します。

以下の説明は理解のためのものです:

カプセル化:

カプセル化は、ソフトウェア コンポーネントの優れたモジュール性を確保するための基礎であり、プログラムの相互依存性の影響を防ぐためにソフトウェア コンポーネントの高い結合性と低い結合性を実現することです。今後の変更。

継承:

クラスを定義して実装するときは、既存のクラスに基づいて行うことができ、この既存のクラスで定義されたコンテンツを独自のコンテンツとして使用したり、新しいコンテンツを追加したり、元のコンテンツのメソッドを変更したりすることができます。特別なニーズにより適したものにする、これが継承です。継承は、サブクラスが親クラスのデータとメソッドを自動的に共有するメカニズムであり、ソフトウェアの再利用性と拡張性を向上させるクラス間の関係です。

ポリモーフィズム:

ポリモーフィズムとは、プログラム内で定義された参照変数が指す特定の型と、参照変数を介して発行されるメソッド呼び出しがプログラミング中に決定されず、プログラムの実行中に決定されることを意味します。参照 変数が指すクラス インスタンス オブジェクトと、参照変数によって発行されるメソッド呼び出しを実装するクラスは、プログラムの実行中に決定する必要があります。

抽象化:

抽象化とは、いくつかの物事の類似点と共通点を見つけて、それらをクラスに分類することです。このクラスでは、これらの物事の類似点と共通点のみが考慮され、現在のトピックに無関係なものは無視されます。および目標。現在の目標に関連する側面に焦点を当てます。たとえば、アリとゾウを見て、それらがどのように似ているかを想像できる場合、それは抽象化です。

6. 抽象クラスとインターフェイスの概念と違いは何ですか?

答え: 抽象クラス: これはインスタンス化できず、他のクラスの親クラスとしてのみ使用できる特別なクラスです。 abstract キーワードを使用して宣言します。

特殊な抽象クラスとインターフェース宣言を使用した特殊なクラスです。

(1) 抽象クラスの操作は継承キーワード extends によって実装され、インターフェイスの使用はimplements キーワードによって実装されます。

(2) データのカプセル化を実現できる抽象クラスにはデータメンバが存在しますが、インターフェースにはデータメンバがありません。

(3) 抽象クラスはコンストラクターを持つことができますが、インターフェイスにはコンストラクターがありません。

(4) 抽象クラスのメソッドは、private、protected、および public キーワードを使用して変更できます (抽象メソッドをプライベートにすることはできません)。一方、インターフェイス内のメソッドは、public キーワードを使用してのみ変更できます。

(5) クラスは 1 つの抽象クラスからのみ継承でき、クラスは複数のインターフェイスを同時に実装できます。

(6) 抽象クラスはメンバー メソッドの実装コードを持つことができますが、インターフェイスはメンバー メソッドの実装コードを持つことができません。

7. コンストラクター、デストラクター、およびその機能とは何ですか?

答え: コンストラクター (メソッド) は、オブジェクトの作成後にオブジェクトによって自動的に呼び出される最初のメソッドです。これは宣言されたすべてのクラスに存在し、特別なメンバー メソッドです。その機能は、いくつかの初期化タスクを実行することです。 Php では、__construct() を使用してコンストラクター メソッドを宣言しますが、宣言できるのは 1 つだけです。

デストラクター (メソッド) は、コンストラクターの逆です。オブジェクトが破棄される前に、オブジェクトによって自動的に呼び出される最後のメソッドです。これは PHP5 で新しく追加されたコンテンツで、ファイルを閉じたりメモリを解放したりするなど、オブジェクトを破棄する前に特定の操作を実行するために使用されます。

8. 親クラスのメソッドをオーバーロードする方法と例

答え: オーバーロードとは、親クラスのメソッドをオーバーライドすること、つまり、サブクラスのメソッドを使用して親クラスから継承したメソッドを置き換えることを意味します。 、リライトメソッドとも呼ばれます。

親クラスのメソッドをオーバーライドする鍵は、メソッド名、パラメーター、戻り値の型を含む、サブクラスの親クラスに同じメソッドを作成することです。 PHP では、メソッドの名前のみが同じである必要があります。

9. よく使われる魔法の方法は何ですか?たとえば

回答: PHP では、2 つのアンダースコア (__) で始まるメソッドはマジック メソッドとして予約されると規定されているため、既存のマジック メソッドをオーバーロードする場合を除き、関数名を __ で始めないことをお勧めします。

__construct() は、クラスをインスタンス化するときに自動的に呼び出されます。

__destruct() は、クラスオブジェクトが使用されるときに自動的に呼び出されます。

__set() は、未定義のプロパティに値を割り当てるときに呼び出されます。

__get() は、未定義のプロパティが呼び出されたときに呼び出されます。

__isset() は isset() 関数または empty() 関数を使用するときに呼び出されます。 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函数。

返回顶部

四、ThinkPHP部分

1、常见的PHP框架

答:thinkPHP

yii

ZendFramework

CakePhp

sy

2、如何理解TP中的单一入口文件?

答:ThinkPHP采用单一入口模式进行项目部署和访问,无论完成什么功能,一个项目都有一个统一(但不一定是唯一)的入口。应该说,所有项目都是从入口文件开始的,并且所有的项目的入口文件是类似的,入口文件中主要包括:

定义框架路径、项目路径和项目名称(可选)

定义调试模式和运行模式的相关常量(可选)

载入框架入口文件(必须)

 

3、ThinkPHP中的MVC分层是什么?(理解)

答:MVC 是一种将应用程序的逻辑层和表现层进行分离的方法。ThinkPHP 也是基于MVC设计模式的。MVC只是一个抽象的概念,并没有特别明确的规定,ThinkPHP中的MVC分层大致体现在:

模型(M):模型的定义由Model类来完成。

控制器(C):应用控制器(核心控制器App类)和Action控制器都承担了控制器的角色,Action控制器完成业务过程控制,而应用控制器负责调度控制。

视图(V):由View类和模板文件组成,模板做到了100%分离,可以独立预览和制作。

但实际上,ThinkPHP并不依赖M或者V ,也就是说没有模型或者视图也一样可以工作。甚至也不依赖C,这是因为ThinkPHP在Action之上还有一个总控制器,即App控制器,负责应用的总调度。在没有C的情况下,必然存在视图V,否则就不再是一个完整的应用。

总而言之,ThinkPHP的MVC模式只是提供了一种敏捷开发的手段,而不是拘泥于MVC本身。

 

5、如何理解 ThinkPHP 3.0 架构三(核心 + 行为 + 驱动)中的行为?

答:核心 + 行为 + 驱动

TP官方简称为:CBD

核心(Core):就是框架的核心代码,不可缺少的东西,TP本身是基于MVC思想开发的框架。

行为(Behavior) :行为在新版ThinkPHP的架构里面起着举足轻重的作用,在系统核心之上,设置了很多标签扩展位,而每个标签位置可以依次执行各自的独立行为。行为扩展就因此而诞生了,而且很多系统功能也是通过内置的行为扩展完成的,所有行为扩展都是可替换和增加的,由此形成了底层框架可组装的基础。

驱动( Driver ):数据库驱动、缓存驱动、标签库驱动和模板引擎驱动,以及外置的类扩展。

框架,即framework。其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。

 

6、什么是惯例配置?

答:惯例配置上一页下一页惯例重于配置是系统遵循的一个重要思想,系统内置有一个惯例配置文件(位于系统目录下面的Conf\convention.php),按照大多数的使用对常用参数进行了默认配置。所以,对应用项目的配置文件,往往只需要配置和惯例配置不同的或者新增的配置参数,如果你完全采用默认配置,甚至可以不需要定义任何配置文件。

惯例配置文件会被系统自动加载,无需在项目中进行加载。

7、什么是SQL注入?(理解)

回答: SQL インジェクション攻撃は、ハッカーがデータベースを攻撃するために使用する一般的な手段の 1 つです。プログラマーの中には、コードを記述するときにユーザー入力データの正当性を判断しない人もいます。インジェクターはデータベース クエリ コードをフォームに入力して送信し、プログラムは送信された情報を結合して完全な SQL ステートメントを生成します。騙されて悪意のあるSQLコマンドを実行します。インジェクターは、プログラムから返された結果に基づいて機密データを取得し、サーバー全体を制御することもできます。これが SQL インジェクションです。

8. ThinkPHP はどのようにして SQL インジェクションを防止しますか? (理解)

答え: (1) より安全な方法である配列をクエリ条件に使用してみてください

(2) 文字列クエリ条件を使用する必要がある場合は、前処理メカニズムを使用してください

(3) データを有効にします。フィールド タイプの検証では、数値データ タイプの変換を強制できます。(フィールド タイプの検証はバージョン 3.1 以降必須です)

(4) 自動検証および自動補完メカニズムを使用して、アプリケーションのカスタム フィルタリングを実行します。悪意のあるデータ入力を回避するための型チェック、自動検証、および自動完了メカニズム。

9. デバッグモードを有効にするにはどうすればよいですか?デバッグモードの利点は何ですか?

答え: デバッグ モードをオンにするのは非常に簡単です。定数定義コードの行をエントリ ファイルに追加するだけです:

//デバッグ モードをオンにする

define('APP_DEBUG ', true);

//フレームワーク エントリ ファイルをロードします

require './ThinkPHP/ThinkPHP.php';

開発フェーズが完了して運用環境にデプロイした後は、デバッグ モード定義を削除するだけで済みますデプロイメントモードに切り替えるコード。デバッグ モードをオンにすると、システムはまずシステムのデフォルトのデバッグ構成ファイルをロードし、次にプロジェクトのデバッグ構成ファイルをロードします。 デバッグ モードの利点は次のとおりです:

ログをオンにすると、エラー情報とデバッグ情報が記録されます。デバッグを容易にするために詳細に記録する;

テンプレート キャッシュをオフにすると、テンプレートの変更はすぐに有効になります。

SQL ログを記録して SQL 分析を容易にします。

フィールド キャッシュをオフにすると、データ テーブルのフィールドの変更は影響を受けませんキャッシュ;

ファイルの大文字と小文字を厳密にチェックします (Windows プラットフォームでも))、Linux 導入の問題を事前に発見するのに役立ちます。

は、開発、テスト、デモンストレーション、その他の必要な状況を含む、開発プロセスのさまざまな段階で便利に使用できます。独立したプロジェクト構成ファイルを使用して、さまざまなアプリケーション モードを構成できます。

10. TP ではどのような構成モードがサポートされていますか?優先度?

回答: ThinkPHP は、プロジェクト構成に独自の階層構成モードを作成しました。その構成レベルは、

従来の構成 -> プロジェクト構成 -> デバッグ構成 -> グループ構成 -> 拡張構成 -> に反映されます。 ;動的設定

上記は設定ファイルのロード順序です。後の設定は同じ名前の以前の設定を上書きするため(有効にならない場合)、優先順位は右から左になります。

11. TP の URL パターンは何ですか?デフォルトはどれですか?

回答: ThinkPHP は、通常モード、PATHINFO、REWRITE、互換モードを含む 4 つの URL モードをサポートしており、URL_MODEL パラメーターを設定することで定義できます。

デフォルトのモードは: PATHINFO モード、URL_MODEL を 1 に設定します

12 TP のシステム変数は何ですか?システム変数を取得するにはどうすればよいですか?

回答: システム変数を取得する方法:

Action で次のメソッドを呼び出すだけです:

$this->メソッド名 ("変数名", ["フィルターメソッド"], ["デフォルト値" ]) )

13. ThinkPHP フレームワークの D 関数と M 関数の違いは何ですか?

回答: M メソッドでは、モデルをインスタンス化するときにユーザーが各データ テーブルにモデル クラスを定義する必要はありません。カスタム モデル クラスが存在する場合、D メソッドはモデル クラスを自動的に検出します。存在しない場合は、カスタム モデル クラスが自動的に呼び出され、Model 基本クラスがインスタンス化されます。同時に、インスタンス化されたモデルは繰り返しインスタンス化されません (シングル ケース モード)。

トップに戻る

5. Smarty テンプレート エンジン

1. コンパイルとキャッシュの違いは何ですか?

Smarty のコンパイルプロセスは、テンプレートを取得し、内部のタグを対応する php コードに置き換えることです。これは実際には、php と HTML を混合するプロセスです

。キャッシュはコンパイルされたファイルを実行し、同時に静的な HTML ページを生成するため、再度アクセスすると HTML ファイルにアクセスするため、効率の点ではより高くなります

2. Smarty とは何ですか? Smarty の利点は何ですか?

Smarty は、PHP プログラムをアーティストから分離して、プログラマーが論理コンテンツを変更できるようにすることです。アーティストのページに影響を与えずにプログラムの変更を行うことができます。デザイナーやアーティストは、ページを再変更するときにプログラムのプログラム ロジックに影響を与えません。これは、複数人によるコラボレーション プロジェクトでは特に重要です。 (マルチスタイルプログラムの開発も簡単です)

Smartyの利点

1. 他のテンプレートエンジンと比較して高速です。

2. コンパイル済みタイプ: Smarty を使用して作成されたプログラムは、実行時に非テンプレート テクノロジの PHP ファイルにコンパイルする必要があります

3 キャッシュ技術: ユーザーが最終的に見る HTML ファイルを静的 HTML ページにキャッシュできます。

4. プラグイン技術: Smarty はプラグインをカスタマイズできます。

smartyの使用には適していません

1. リアルタイムで更新する必要があるコンテンツ。たとえば、在庫表示のように、頻繁なデータ更新が必要です。 2. 小規模なプロジェクト。シンプルなため、アーティストとプログラマーの両方が必要な小規模プロジェクト

3.テンプレート内の変数を保持するには、{$smarty} を使用します

{$smarty.get.page} // $_GET[page] へのアクセスと同様です

{smarty.cookies.}

{smarty.post.

{smarty.session.}

{smarty.server.}

4. テンプレート内の php の変数にアクセスする

php スクリプトには 2 種類のシステム定数とカスタム定数があります。 Smarty テンプレートでアクセスされ、変数が {$smarty} を通じて保持されている限り、定数の値を PHP から割り当てる必要はありません。テンプレート内の定数の出力例:

{$smarty.const._MY_CONST_VAL}

{$smarty.const.__FILE__}

5. 変数修飾子

{$var|modifier1|modifier2| .. .....}

<{$str}>

<{$str|capitalize}><{*最初の文字は大文字です*}>

<{$str|upper}><{*すべて大文字*}>

<{$str| lower}><{*すべて小文字*}> br<

<{$str| lower|upper}><{*すべて大文字、左から右に調整*}>

<{$leg|truncate}> {*文字列インターセプト、デフォルト 80 文字*}>

<{$leg|truncate:10}><{*文字列インターセプト、...3 文字を含む最初の 10 文字 *} >

6. php が mysql データベースにクエリを実行すると、中国語の結果が文字化けします。どうやって対処すればいいのでしょうか? ? ? ?

1. ファイルのプロパティ (名前を付けて保存)

2.ファイルメタ (ブラウザ解析を設定する場合)

3. データベース接続時のエンコーディング設定

4. PHP ファイルのヘッダー関数を使用してエンコーディングを決定する

7. キャッシュする場合を有効にすると、smarty 同時に静的 html ページが生成され、設定時間内に有効期限が切れなければ、再度アクセスすると html ファイルにアクセスすることになり、データベースを読み取る必要が減ります。効率の点では、それはより高いです。

8. Smarty の割り当てとテンプレートの読み込み

$Smarty->assign(name,value)

$Smarty->display('index.html')

9. Smarty テンプレート技術とはの目的は?

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 コード スニペット、すべてのコメント、および変数を表示するには、assign 割り当てを使用します。 Smarty テンプレート ファイルでは関数を区切り文字内に含めることはできません。

A.{}

B. if else

E. トップに戻る

6. そうです。二次開発についての理解

二次開発とは、簡単に言うと、既存のソフトウェアをカスタマイズして修正し、機能を拡張し、必要な機能を実現することです。一般的に、元のシステムのコアは変更されません。

2. MVC

モデルデータ処理。

テンプレート表示を表示します。

コントローラーはプロセスを制御します。

MVC の概念とは何ですか?各レベルの主なタスクは何ですか?

MVC (Model-View-Controller) は、ソフトウェア設計パターンまたはプログラミングのアイデアです。

M はモデル層、V はビュー層 (表示層またはユーザー インターフェイス)、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 ではいくつのタグが使用されていますか?

リストタグとコンテンツタグはそのスコープ内でのみ使用でき、リストタグはリスト内でのみ使用でき、コンテンツタグはコンテンツタグ内でのみ使用できます。

グローバルタグはすべてのページで使用できます

12.共通クラス ライブラリ

(例: dedesql.class.php) に精通している; システム関数ライブラリ (common.func.php) に精通している; フロントエンド エントリに精通しているファイル (common.inc. php)

トップに戻る

7. WeChat パブリック プラットフォームの開発

1. WeChat の動作メカニズム

公式アカウントと php の間の通信に使用される言語: //データの受信 XML データ

2. メッセージ タイプ

WeChat は現在 7 つの基本的なメッセージ タイプを提供しています。

(1) テキストメッセージ (テキスト);

(2) 画像メッセージ (画像)

(4) ビデオ (ビデオ)

(5) 地理的位置 (場所) ;

(6) リンクメッセージ (リンク);

(7) イベントプッシュ (イベント)

タイプ。さまざまな種類のメッセージを送信するときのデータ転送形式をマスターする

4. ファイル全体を文字列に読み取る関数は

File_get_contents

5 です。オブジェクト

simplexml_load_string( )

将字符串转换为数组的函数是___ explode_________,将数组转化为字符串的函数是____implode________.

编码 URL 字符串的字符串是____urlencode________.

6. Sprintf函数的作用

  这个都是可以查手册的。

7. 微信公众号出现无法提供服务的原因?

   1. 网络原因 ,数据接口原因

2. 代码错误,怎么推测原因

       修改的哪里检查一下,如果代码没错

    可以输出数据 看一下。用php操作文件

 

    $myfile = fopen("newfile.txt", "w");

    $txt ="aaaaaaaaaa";

    fwrite($myfile, $txt);

    fclose($myfile);

 

8.  自定义菜单的事件推送

       单击

       单击跳转链接

       扫码推事件

       扫码推且弹出

       弹出系统拍照发图的事件

       弹出微信相册发图器的事件

       弹出地理位置选择器的事件

9.token的作用

   安全机制验证,用于微信服务器与PHP服务器之间的安全验证
10. Appid与secrect的作用

   请求api接口(例如菜单的操作)时需要传appid与secrect两个值,用来获取应用的授权码  

返回顶部

八、对于自身掌握的技术描述:

1. 以PHP+MYSQL为方向,熟练掌握smarty模板引擎、ThinkPHP框架、微信公众平台开发、DEDE、ecshop等二次开发系统,对面向对象有一定的理解;数据库方面,熟练掌握MYSQL、MSSQL等数据库;熟悉在linux下的PHP开发

2. 前端技术:熟练掌握p+CSS网页布局,javascript,JQuery框架、AJAX技术、photoshop图片处理

3. 一年的项目开发经验,使用smarty开发过‘XXXXXXXX’,ThinkPHP开发过‘XXXXXXXX’,使用微信公众平台开发过‘就业服务网’的公众号,使用织梦系统开发过企业站等。

以上がPHP 面接の主要な質問の共有 (1)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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