ホームページ  >  記事  >  バックエンド開発  >  2017phpの古典的な面接の質問

2017phpの古典的な面接の質問

不言
不言オリジナル
2018-04-21 10:32:071561ブラウズ

この記事の内容は 2017php の古典的な面接の質問に関するもので、必要な友人に参考にしていただけると思います

1。 -プラットフォーム。クロスプラットフォームとは何ですか? 1. PHP の基本:


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

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

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

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

4. Getで渡される値は通常2KB以内であり、postで渡される値はphp.iniで設定可能です

5. getの安全性は低くありませんが、postの安全性は高くありません。より高いですが、実行効率は Post よりも高くなります。

推奨事項:

1. get メソッドは機密情報を含むため、Post データ送信メソッドを使用することをお勧めします。 ;

2. データの追加と変更には Get メソッドを使用することをお勧めします。 URLから見れます

3. PHPのフレームワーク、テンプレートエンジン、システムなどをマスターする

フレームワーク: Framework zendframe、CI、Yiiなどたくさんあります。 thinkphp

テンプレートエンジン:教科書で私たちが学んだことはsmarty

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

4. どのような Web フロントエンド技術を習得したか教えてください。

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

5. AJAX の利点は何ですか?

ajax は、部分更新を実現するために JavaScript または JQuery フレームワークを通じて実装できる非同期送信テクノロジです。これにより、サーバーへの負荷が軽減され、一連のプログラムのセキュリティが向上します。は非常に重要です。開発時に注意すべきセキュリティ機構について教えてください。

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

7. プログラムの動作効率を向上させるにはどうすればよいですか?

① SQL ステートメントを最適化し、クエリ ステートメントで select * を使用しないようにし、どのフィールドを使用してチェックするか、サブクエリの使用を減らし、ファジー クエリの使用を減らします。 ③ 頻繁に使用するデータのキャッシュを生成するプログラムを確認します

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

PHP は MYSQL データベースと組み合わせるのに最適です。もちろん、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 形式に変換します

11。Print、echo、print_r の違いは何ですか?

① echoとprintは両方とも出力ができます。違いは、echoは関数ではないので戻り値がありませんが、printは戻り値がある関数なので、相対的にはechoを出力するだけの方が速いです。 、通常、print_r が使用されますが、変数関連の情報を出力するために使用され、通常はデバッグで使用されます。

② print は文字列を出力します

③ print_r は配列オブジェクトなどの複合型を出力します

12 SESSION と COOKIE の違いは何ですか?

①保存場所: セッションはサーバーに保存され、Cookieはブラウザに保存されます

②セキュリティ: セッションのセキュリティはCookieよりも高いです

③セッションは「セッションサービス」であり、サービスはCookie を有効にする必要はありません。直接使用できます

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

①array() は配列を作成します; ②count() は配列内の要素の数を返します; ③array_push() は 1 つ以上の要素を末尾に挿入します配列の (スタックにプッシュ); ④array_column() は入力配列の 1 つの列の値を返します; ⑤array_combine() は 2 つの配列を結合して新しい配列を作成します; ⑥array_reverse() は配列を逆の順序で返します;配列内の重複する値を削除します。 ⑧in_array() は、配列内に指定された値が存在するかどうかを確認します。 (関数の「パラメータ」と「戻り値」に注目してください)

①trim()は文字列の両側の空白文字とその他の文字を削除します。②substr_replace()は文字列の一部を別の文字列に置き換えます。 ) 文字列内に部分文字列が出現する回数をカウントします。 ④substr() は文字列の一部を返します。 ⑥strtoupper() は文字列を大文字に変換します。 ⑧strrchr() は別の文字列の最後の文字列を検索します。 ⑨strstr() は別の文字列の最初の文字列を検索します (大文字と小文字を区別します)。 string; str_replace() は文字列内の一部の文字を置き換えます (大文字と小文字を区別します); print() は文字列を配列に分割します; is_string() は変数が文字列であるかどうかを検出します。文字列からの HTML タグ; mb_substr() は中国語と英語をカットするために使用される関数です

16。 (関数の「パラメーター」と「戻り値」に注目してください)

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

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

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

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

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

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

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

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

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

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

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

18. PHPの一般的に使用される関数は何ですか。ファイルを操作するには? (関数の「パラメータ」と「戻り値」に注目してください)

①ファイルを開く; ②ファイルを削除する; ③ファイルを読み取る; ⑤ファイルを変更する; ⑥ファイルを閉じる; この項目は非常に重要であり、仕事でキャッシュや静的ファイルを生成するためによく使用されます。 、PHPのマニュアルを参照してよく確認してください

19. PHPの操作ディレクトリ(フォルダー)の共通機能は何ですか? (関数の「パラメータ」と「戻り値」に注目)

①ディレクトリを開く; ②ディレクトリを削除する; ④ディレクトリを作成する; ⑥ディレクトリを閉じる; などです。重要です。仕事では、アップロードされたファイルのディレクトリの作成や削除、キャッシュされたページや静的ページのディレクトリの作成や削除によく使用されます。PHP マニュアルを参照してよく読んでください

トップに戻る

2. データベース部分

1. 一般的なリレーショナル データベース管理システム製品とは何ですか?

答え: Oracle、SQL Server、MySQL、Sybase、DB2、Access など。

2. SQL 言語にはどのような部分が含まれますか?各セクションのアクションキーワードは何ですか?

回答: SQL 言語には、データ定義 (DDL)、データ操作 (DML)、データ制御 (DCL)、およびデータ クエリ (DQL) の 4 つの部分が含まれています。

データ定義: テーブルの作成、テーブルの変更、テーブルの削除、インデックスの作成/削除など

データ操作: 選択、挿入、更新、削除、

データ制御: 付与、取り消し

データクエリ: select

3. 整合性制約とは何ですか?

答え: データの整合性とは、データの正確さと信頼性を指します。

は、次の 4 つのカテゴリに分類されます:

1) エンティティの整合性: テーブルの各行がテーブル内で一意のエンティティであることを規定します。

2) ドメインの整合性: テーブル内の列が、値の範囲、精度、その他の規制を含む特定のデータ型の制約を満たす必要があることを意味します。

3) 参照整合性: 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 はレコードの一意性制約であり、レコードが以下である必要があります。一意の ID、つまりエンティティの一意性、第 3 正規形: 3NF はフィールドの冗長性に関する制約です。つまり、フィールドは他のフィールドから派生できず、フィールドが冗長でないことが必要です。 。

10. 基本テーブルとは何ですか?ビューとは何ですか?

回答: 基本テーブルは、SQL では独立して存在するテーブルです。リレーションシップはテーブルに相当します。 ビューは、1 つまたは複数のベース テーブルから派生したテーブルです。ビュー自体はデータベースに独立して保存されるのではなく、仮想テーブルです

11. ビューの利点について説明してください。

答え: (1) ビューにより、ユーザーの操作が簡素化されます。 (2) ビューにより、ユーザーは複数の観点から同じデータを表示できます。 (4) ビューは、データベースにある程度の論理的独立性を提供します。機密データのセキュリティ保護。

12. NULL とはどういう意味ですか?

答え: 値 NULL は UNKNOWN (不明) を表し、「」 (空の文字列) を表しません。 NULL 値と比較すると、NULL 値が生成されます。値を NULL 値と比較して、論理的に答えが得られることを期待することはできません。

NULL判定にはIS NULLを使用

13. 主キー、外部キー、インデックスの違いは何ですか?

主キー、外部キー、インデックスの違い

定義:

主キー - レコードを一意に識別し、重複はなく、空は許可されません

外部キー - テーブルの外部キーキーは別のテーブルの主キーです

外部キーは重複値または null 値を持つことができます

インデックス - このフィールドには重複値はありませんが、null 値を持つことができます

関数:

主キー - データの整合性を確保するために使用されます

外部キー - 他のテーブルとの接続を確立するために使用されます

インデックス - クエリのソート速度を向上させるために使用されます

数値:

主キー - 主キーは 1 つだけです

外部キー - テーブルには複数の外部キーを持つことができます

インデックス - テーブルには複数の一意のインデックスを持つことができます

14. テーブル内のフィールドが特定の範囲の値のみを受け入れるようにするには、何を使用できますか?

答え: 列に入力される値を制限するためにデータベース テーブルに定義されている制限を確認します。

トリガーを使用してデータベーステーブルのフィールドが受け入れることができる値を制限することもできますが、この方法ではテーブルにトリガーを定義する必要があり、場合によってはパフォーマンスに影響を与える可能性があります。

15. SQL ステートメントを最適化する方法は何ですか? (いくつか選択してください)

(1) Where 句内: where テーブル間の接続は他の Where 条件より前に記述する必要があり、最大数のレコードを除外できる条件は、Where 句の最後に記述する必要があります。最後にWhere句.HAVING。

(2) IN を EXISTS に、NOT IN を NOT EXISTS に置き換えます。

(3) インデックス列での計算の使用を避ける

(4) インデックス列で IS NULL と IS NOT NULL の使用を避ける

(5) クエリを最適化し、スキャン時に満杯のテーブルをできる限り避けるの場合は、まず where と order by に関係する列にインデックスを作成することを検討する必要があります。

(6) where 句内のフィールドの null 値判定を避けるように努めるべきです。そうしないと、エンジンはインデックスの使用を放棄し、テーブル全体のスキャンを実行します

(7) null 値を避けるように努めるべきです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 は、頻繁なクエリを使用するアプリケーションに適しており、デッドロックがなく、小規模なデータ、小規模な同時実行に適しています。トランザクションをサポートするエンジン。多くの挿入および更新操作を行うアプリケーションに適しています。適切に設計されている場合は、行ロックになります (最大の違いはロックのレベルにあります)。

19. データテーブルのタイプとは何ですか?

答え: MyISAM、InnoDB、HEAP、BOB、ARCHIVE、CSV など。

MyISAM: 完成度が高く、安定していて、管理が簡単で、読みやすいです。一部の関数 (トランザクションなど) はテーブルレベルのロックをサポートしていません。

InnoDB: トランザクション、外部キーおよびその他の機能、およびデータ行ロックをサポートします。多くのスペースを占有し、全文インデックス作成などはサポートされていません。

20. MySQL データベースは、1 日あたり 50,000 アイテム以上の増加が 3 年間続くと予想されます。

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# であり、PHP と C++ はプロセス指向の OO 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() 関数または empty() 関数を使用すると、

__isset() が呼び出されます。 unset() を使用すると

__unset() が呼び出されます。

__sleep() は、serialize が使用されるときに呼び出されます。

__wakeup() は、unserialize を使用してデシリアライズするときに呼び出されます。

__call() は、存在しないメソッドを呼び出すときに呼び出されます。

__callStatic() は、存在しない静的メソッドを呼び出します。

__toString() は、オブジェクトを文字列に変換するときに呼び出されます。エコーなど。

__invoke() オブジェクトをメソッドとして呼び出そうとするときに呼び出されます。

__set_state() は、var_export() 関数を使用するときに呼び出されます。配列パラメータを受け入れます。

__clone() は、clone を使用してオブジェクトをコピーするときに呼び出されます。

10. $this と self とparent の 3 つのキーワードはそれぞれ何を表しますか?どのような状況で使用されますか?

答え: $this current object

self current class

parent 現在のクラスの親クラス

$this は現在のクラスで使用されており、プロパティとメソッドを呼び出すには -> を使用します。 。

self も現在のクラスで使用されていますが、:: を使用して呼び出す必要があります。

parentはクラスで使用されます。

11. クラス内で定数を定義する方法、クラス内で定数を呼び出す方法、およびクラス外で定数を呼び出す方法。

答え: クラスの定数はメンバー定数でもあり、定数は変化しない量であり、定数値です。

キーワード const を使用して定数を定義します。

例: const PI = 3.1415326;

クラス内かクラス外かにかかわらず、定数へのアクセスは変数へのアクセスとは異なります。オブジェクトをインスタンス化する必要はありません。

定数にアクセスするための形式は、クラス名と呼び出すスコープ操作記号 (二重コロン) です。

つまり: クラス名:: クラス定数名;

12. スコープ演算子::? の使い方どのような状況で使用されますか?

答え: クラス定数を呼び出す

静的メソッドを呼び出す

13. __autoload() メソッドはどのように機能しますか?

答え: このマジック関数を使用するための基本的な条件は、クラス ファイルのファイル名がクラスの名前と一致している必要があることです。

あるクラスをインスタンス化するプログラムを実行する際、インスタンス化前にクラスファイルが導入されていないと、__autoload()関数が自動的に実行されます。

この関数は、インスタンス化されたクラスの名前に基づいてクラスファイルのパスを見つけます。クラスファイルのパスにクラスファイルが存在すると判断された場合、

はincludeまたはrequireを実行します。このパスにファイルが存在しない場合は、エラーが表示されます。

自動ロードマジック関数を使用すると、多くの include 関数や require 関数を記述する必要がなくなります。

トップに戻る

IV. ThinkPHP パート

1. 一般的な PHP フレームワーク

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 自体に固執するのではなく、アジャイル開発の手段を提供するだけです。

4. SQLを最適化するには? (学生は次の説明を理解して、自分の理解に従って一般的な意味を述べるだけで済みます)

答え:

(1) 正しいストレージ エンジンを選択してください

たとえば、MySQL を取り上げます。 MyISAM と InnoDB という 2 つのストレージ エンジンです。各エンジンには長所と短所があります。

MyISAM は、大量のクエリを必要とする一部のアプリケーションには適していますが、大量の書き込み操作にはあまり適していません。フィールドを更新するだけの場合でも、テーブル全体がロックされ、読み取り操作が完了するまで他のプロセス (読み取りプロセスであっても) が動作できなくなります。さらに、MyISAM は SELECT COUNT(*) などの計算が非常に高速です。

InnoDB の傾向は非常に複雑なストレージ エンジンになり、一部の小規模なアプリケーションでは MyISAM よりも遅くなるでしょう。ただし、「行ロック」をサポートしているため、書き込み操作が多い場合はより優れています。さらに、トランザクションなどのより高度なアプリケーションもサポートします。

(2) フィールドのデータ型を最適化します

列が小さいほど高速になるという原則を覚えておいてください。テーブルに少数の列しかない場合 (ディクショナリ テーブル、構成テーブルなど)、主キーとして 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) データ フィールド タイプの検証を有効にすると、数値データ タイプの変換を強制できます (フィールド タイプの検証はバージョン 3.1 から必須になりました)

(4) 自動検証と自動補完メカニズムを使用してアプリケーションを実行します。特定の検証 カスタム フィルタリング

(5) フィールド タイプ チェック、自動検証、および自動補完メカニズムを使用して、悪意のあるデータ入力を回避します。

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

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

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

define(' APP_DEBUG', true);

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

require './ThinkPHP/ThinkPHP.php';

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

ログとエラー メッセージをオンにします。デバッグ情報を詳細に記録します。

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

SQL 分析を容易にするために、SQL ログを記録します。データ テーブル フィールドの変更はキャッシュの影響を受けません。

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 メソッドはモデル クラスを自動的に検出します。存在しない場合は、M メソッドが自動的に呼び出され、Model 基本クラスがインスタンス化されます。同時に、インスタンス化されたモデルは繰り返しインスタンス化されません (シングル ケース モード)。

トップに戻る

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

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

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

Smarty のキャッシュは、コンパイルされたファイルを実行すると同時に静的な HTML ページを生成するため、再度アクセスすることになります。 2. Smarty とは何ですか? Smarty の利点は何ですか?

Smarty は、PHP で書かれた PHP テンプレート エンジン です。 PHP プログラムを使用する目的 アーティストからの分離 により、プログラマーはアーティストのページ デザインに影響を与えることなくプログラムのロジック コンテンツを変更できます。アーティストがページを再変更しても、プログラムのプログラム ロジックには影響しません。これは特に、複数人で協力するプロジェクトに当てはまります。 (マルチスタイルプログラムの開発も簡単です)

Smarty の利点

1. 速い: 他のテンプレートエンジンと比較して。

2. コンパイル型: Smarty で書かれたプログラムは、実行時に非テンプレート技術の PHP ファイルにコンパイルする必要があります

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

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

Smartyが適さない場所

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

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

{$smarty.get.page} //PHP スクリプトで $_GET[page] にアクセスするのと同様です

{smarty .cookie .}

{smarty.post.}

{smarty.session.}

{smarty.server.}

4.phpにアクセスします。テンプレート PHP スクリプトの

にはシステム定数とカスタム定数の 2 種類の変数があります。これら 2 つの定数は Smarty テンプレートからもアクセスでき、PHP から割り当てる必要はなく、{$smarty を渡すだけです。変数を保持することで、定数の値を直接出力することができます。テンプレート内の定数を出力する例:

{$smarty.const._MY_CONST_VAL}

{$smarty.const.__FILE__}

5. 変数修飾子

{$var|modifier1|modifier 2| }

<{$str}>

<{$str|capitalize}><{*最初の文字を大文字にします*}>

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

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

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

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

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

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

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

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

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

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

7. キャッシュの仕組み

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

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

$Smarty->assign(name,value)

$Smarty->dis play('index.html ')

9. Marty テンプレート テクノロジーの用途は何ですか?

phpとhtmlを分離することで、アーティストとプログラマーはお互いに干渉することなくそれぞれの業務を遂行することができます。

10. Smarty の主な構成は何ですか?

1.smarty.class.php を導入します。

3. デフォルトのテンプレートのパスを再変更します。コンパイルされたファイルのパス

5. デフォルトの設定ファイルのパスを再変更します。

7. キャッシュを有効にするかどうかを設定できます。

8. 左右の区切り文字を設定できます。

11. Smarty を使用する際に注意する必要がある詳細は何ですか?

Smarty は、MVC の概念に基づいたテンプレート エンジンであり、ページ プログラムを 2 つの部分、つまりビュー層とコントロール層に分割して実装します。 PHPコードは別途。

このようにして、プログラマーとアーティストは、お互いに干渉することなく、それぞれの業務を実行できます。

12. Smarty を使用する場合は、次の問題に注意してください。

1. Smarty を正しく設定します。主に、smarty オブジェクトをインスタンス化し、smarty テンプレート ファイルのパスを設定する必要があります。

2.php ページでは、割り当てと表示ページを使用します。

3. Smarty テンプレート ファイルでは、PHP コード スニペットは許可されません。すべてのコメント、変数、関数を区切り文字に含める必要があります。

A.{}

B. if else

E. トップに戻る

6.開発システム (DEDE、ecshop):

1. 二次開発についての理解

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

2. MVC

モデルデータ処理。

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

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

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

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

M は Model モデル層、V は View ビュー層 (表示層またはユーザー インターフェイス)、C は Controller コントローラー層を指します。

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. 以下の概念、デザイン、および dede でのテンプレートの使用を理解する必要があります。コンセプト

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) に精通している; カスタム関数ライブラリ (extend.func.php) に精通しているフロントエンドエントリーファイル(共通.inc.php)

トップに戻る

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

1. WeChatの動作メカニズム

公式アカウントとphp間の通信に使用される言語: Xml

やり方Weixin.php で公開アカウント データを受信:

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//データ XML データを受信

2. メッセージ タイプ

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

(4) ビデオ (ビデオ)

(5) 地理的位置 (位置)

(6) リンクメッセージ (リンク); 7) イベントプッシュ(イベント)

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

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

File_get_contents

です。 5、一般的に使用される関数

XML データをオブジェクトに解析する関数は

simplexml_load_string( )

文字列を配列に変換する関数は____です爆発_________、アレイを文字列に変換する関数は____ rode ________。マニュアルにあります。

7. WeChat 公式アカウントがサービスを提供できないのはなぜですか?

1. ネットワークの理由、データインターフェイスの理由 2. コードエラー、理由の推測方法

コードが正しいかどうかを確認してください

データを取得して見てください。 phpを使ってファイルを操作します

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

$txt ="aaaaaaaaaa";

fwrite( $myfile, $ txt ; コードプッシュイベント

コードをスキャンしてプッシュするとポップアップします

写真を撮ったり投稿するためにシステムをポップアップするイベント

WeChat アルバムの投稿をポップアップするイベント写真

場所セレクターのイベント

をポップアップします。 9. トークンの役割

WeChat サーバーと PHP サーバー間のセキュリティ検証に使用されます

10. secrect

APIインターフェース(メニュー操作など)のリクエスト アプリケーション認可コードを取得するには、appidとsecretの2つの値を渡す必要があります

トップに戻る

8. 習得するテクノロジーの説明:

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

2 での Linux PHP 開発に精通している。 、AJAX テクノロジー、Photoshop 画像処理

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

関連するおすすめ:

2017年最新のPHP古典的な面接の質問のまとめ

PHPの面接の質問のまとめ

以上が2017phpの古典的な面接の質問の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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