目次
PHP 面接の質問 - オブジェクト指向の質問
1. PHP の 3 つのアクセス制御モードの違いを書き留めます: パブリック、プロテクト、プライベート (新浪技術部門)
関連する質問: PHP5 権限制御修飾子を作成してください
private protected public
2. デザイン パターンの検査: 次の要件を満たすクラスを設計するには、単相的なデザイン パターン メソッドを使用してください:
接続データベース詳細コードは無視されます。メインロジックコードを記述してください(Sina.com技術部門)" > 実行中に一意の値のみが取得できるように、クラスの実装を記述するには PHP5 コードを使用してください。データベース接続への各アクセス。特定の接続データベース詳細コードは無視されます。メインロジックコードを記述してください(Sina.com技術部門)
3. 次のプログラムの出力結果を記述します(Sina) .com技術部)
マジックメソッド関数とは何ですか?その使用例を教えてください(Tencent PHPエンジニア筆記試験問題)" >[!]4. PHP5のマジックメソッド関数とは何ですか?その使用例を教えてください(Tencent PHPエンジニア筆記試験問題)
相关题目:请写出 php5 的构造函数和析构函数
set_state は var_export が呼び出されたときに呼び出されます、set_state の戻り値を使用します。値は var_export の戻り値として使用されます
call オブジェクトはメソッドを呼び出します。メソッドが存在する場合は、直接呼び出されます。属性が存在する場合は、call 関数を呼び出します
set オブジェクトの属性を設定するとき、属性が存在する場合、値が直接割り当てられます。存在しない場合、set 関数が呼び出されます
unset Unset はオブジェクトのプロパティが呼び出されるときに呼び出されます
autoload オブジェクトをインスタンス化します。対応するクラスが存在しない場合、このメソッドが呼び出されます
関連する質問: php5 のコンストラクターとデストラクターを記述してください

7. 「myclass」のインスタンスであるオブジェクトはどのように作成しますか? (Yahoo)
関連する質問: 「myclass」のインスタンスであるオブジェクトはどのように作成しますか?
B. 機能しません。クラス定義は 1 つの PHP ブロック内に存在する必要があります。
13. 类中如何定义常量、如何类中调用常量、如何在类外调用常量。
14. autoload()函数是如何运作的?
15. 哪种OOP设置模式能让类在整个脚本里只实例化一次?(奇矩互动)
16. 借助继承,我们可以创建其他类的派生类。在PHP中,子类最多可以继承几个父类?(奇矩互动)
17. 执行以下代码,输出结果是(奇矩互动)
18. 执行以下代码,输出结果是
19. 请定义一个名为MyClass的类,这个类只有一个静态方法justDoIt。(卓望)
20. 只有该类才能访问该类的私有变量吗?(卓望)
21. 写出你知道的几种设计模式,并用php代码实现其中一种。(卓望)
ホームページ バックエンド開発 PHPチュートリアル PHP 面接の質問におけるオブジェクト指向の質問の分析

PHP 面接の質問におけるオブジェクト指向の質問の分析

Nov 10, 2017 am 10:38 AM
php 物体

オブジェクト指向は PHP を学ぶ上で不可欠な部分です。そのため、多くの友人はオブジェクト指向の知識がほとんどなく、面接に行くと PHP でのオブジェクト指向の質問にどう答えればよいのかわかりません。面接の質問 前回の記事では、PHP の面接の質問、筆記試験の質問、および PHP のコア テクノロジの質問についても紹介しました。今日は、この PHP の面接の質問におけるオブジェクト指向の質問について説明します。

PHP 面接の質問 - オブジェクト指向の質問

1. PHP の 3 つのアクセス制御モードの違いを書き留めます: パブリック、プロテクト、プライベート (新浪技術部門)

public: パブリック、どこからでもアクセス可能
protected: 継承、のみ可能このクラスまたはサブクラスでアクセスでき、他の場所ではアクセスできません
private: private、このクラスでのみアクセスでき、他の場所ではアクセスできません

関連する質問: PHP5 権限制御修飾子を作成してください
private protected public
2. デザイン パターンの検査: 次の要件を満たすクラスを設計するには、単相的なデザイン パターン メソッドを使用してください:
実行中に一意の値のみが取得できるように、クラスの実装を記述するには PHP5 コードを使用してください。データベース接続への各アクセス。特定の接続データベース詳細コードは無視されます。メインロジックコードを記述してください(Sina.com技術部門)
<?php
    class Mysql
    {
        private static $instance = null;
        private $conn;

        // 构造方法,设置为private,不允许通过new获得对象实例
        private function construct(argument)
        {
            $conn = mysql_connect("localhost","root","root");
        }

        // 获取实例方法
        public function getInstance()
        {
            if (!self::$instance instanceof self) {
                self::$instance = new self;
            }
            return self::$instance;
        }

        // 禁止克隆
        private function clone(){}
    }

    // 获得对象
    $db = Mysql::getInstance();
?>
ログイン後にコピー
3. 次のプログラムの出力結果を記述します(Sina) .com技術部)
<?php
    class a
    {
        protected $c;

        public function a()
        {
            $this->c = 10;
        }
    }

    class b extends a
    {
        public function print_data()
        {
            return $this->c;
        }
    }

    $b = new b();
    echo $b->print_data();
?>
ログイン後にコピー

出力結果10

[!]4. PHP5のマジックメソッド関数とは何ですか?その使用例を教えてください(Tencent PHPエンジニア筆記試験問題)

sleep< /code> シリアライズは前に呼び出されました<code>sleep serialize 之前被调用
wakeup unserialize 时被调用
toString 打印一个对象时被调用
set_state 调用 var_export 时被调用,用set_state的返回值作为 var_export 的返回值
construct 构造函数,实例化对象时被调用
destruct 析构函数,当对象销毁时被调用
call 对象调用某个方法,若存在该方法,则直接调用,若不存在,则调用call 函数
get 读取一个对象属性时,若属性存在,则直接返回,若不存在,则调用get 函数
set 设置一个对象的属性时,若属性存在,则直接赋值,若不存在,则调用set 函数
isset 检测一个对象的属性是否存在时被调用
unset unset 一个对象的属性时被调用
clone 克隆对象时被调用
autoload 实例化一个对象时,如果对应的类不存在,则该方法被调用

相关题目:请写出 php5 的构造函数和析构函数

构造函数:construct
析构函数:destruct wakeup はアンシリアライズ時に呼び出されます

toString はオブジェクトの印刷時に呼び出されます
set_state は var_export が呼び出されたときに呼び出されます、set_state の戻り値を使用します。値は var_export の戻り値として使用されます
construct コンストラクター

、オブジェクトをインスタンス化するときに呼び出されます

destruct デストラクター、オブジェクトが破棄されるときに呼び出されます
call オブジェクトはメソッドを呼び出します。メソッドが存在する場合は、直接呼び出されます。属性が存在する場合は、call 関数を呼び出します
get。存在しない場合は、get 関数が呼び出されます。
set オブジェクトの属性を設定するとき、属性が存在する場合、値が直接割り当てられます。存在しない場合、set 関数が呼び出されます
isset はオブジェクトを検出します オブジェクトのプロパティが存在する場合に呼び出されます
unset Unset はオブジェクトのプロパティが呼び出されるときに呼び出されます
clone オブジェクトが複製されるときに呼び出されます
autoload オブジェクトをインスタンス化します。対応するクラスが存在しない場合、このメソッドが呼び出されます
関連する質問: php5 のコンストラクターとデストラクターを記述してください

Constructor: construct

Destructor: destruct
5. 次のクラスの使用方法と内容を説明します。次の意味は?

<?php
    class test{
        function Get_test($num){
            $num = md5(md5($num)."En");
            return $num;
        }
    }

    $testObject = new test();
    $encryption = $testObject->Get_test("itcast");
    echo $encryption;
?>
ログイン後にコピー

二重 md5 暗号化

6. メソッドやプロパティを持たずに「myclass」という名前のクラスを宣言するにはどうすればよいですか?(Yahoo)
class myclass{};
ログイン後にコピー

関連する質問: メソッドやプロパティを持たずに「myclass」という名前のクラスを宣言する方法属性?

7. 「myclass」のインスタンスであるオブジェクトはどのように作成しますか? (Yahoo)
$obj= new myclass();
ログイン後にコピー
関連する質問: 「myclass」のインスタンスであるオブジェクトはどのように作成しますか?

8. クラス内からクラスのプロパティにアクセスして設定するにはどうすればよいですか? (Yahoo)

ステートメントを使用します。例:

<?php
    class mycalss{
        private $propertyName;
        public function construct()
        {
            $this->propertyName = "value";
        }
    }
?>
ログイン後にコピー

9. )
<?php
class Foo{
?>
<?php
    function bar(){
        print "bar";
    }
}
?>
ログイン後にコピー

A. 機能します。クラス定義は複数の PHP ブロックに分割できます。
B. 機能しません。クラス定義は 1 つの PHP ブロック内に存在する必要があります。
C. 複数の PHP ブロック内に存在することもできます。 D. は機能します。クラス定義は複数のファイルと複数の PHP ブロックに分割できます。

回答: B10. クラスの属性はシリアル化してセッションに保存できるため、後でクラス全体を復元できます。そして使用される関数は です。
serialize() と unserialize()

11. PHP では、派生クラスに親クラスと同じ名前の関数がある場合、親クラスの関数とプログラムの結果が派生クラスの関数に置き換えられます。 🎜
<?php
class A{
    function disName(){
        echo "Picachu";
    }
}

class B extends A{
    var $tmp;
    function disName(){
        echo "Doraemon";
    }
}

$cartoon = New B;
$cartoon->disName();
?>
ログイン後にコピー
🎜A.tmp🎜B.Picachu🎜C.disName🎜E.出力なし🎜答え:D🎜🎜12. 🎜🎜🎜抽象クラス🎜はインスタンス化できず、他のクラスの親クラスとしてのみ使用できるクラスです。抽象クラスは、キーワード abstract を使用して宣言されます。 🎜抽象クラスは、メンバー変数とメンバー メソッドを含むという点で通常のクラスと似ています。この 2 つの違いは、抽象クラスにはメソッド本体が本質的に含まれないことです。サブクラスごとに。 🎜抽象メソッドの形式は次のとおりです: abstract function abstractMethod();🎜

接口是通过 interface 关键字来声明的,接口中的成员常量和方法都是 public 的,方法可以不写关键字 public,接口中的方法也是没有方法体。接口中的方法也天生就是要被子类实现的。
抽象类和接口实现的功能十分相似,最大的不同是接口能实现多继承。在应用中选择抽象类还是接口要看具体实现。
子类继承抽象类使用 extends,子类实现接口使用 implements。

13. 类中如何定义常量、如何类中调用常量、如何在类外调用常量。

类中的常量也就是成员常量,常量就是不会改变的量,是一个恒值。定义常量使用关键字 const,例如:const PI = 3.1415326;
无论是类内还是类外,常量的访问和变量是不一样的,常量不需要实例化对象,访问常量的格式都是类名加作用域操作符号(双冒号)来调用,即:类名:: 类常量名

14. autoload()函数是如何运作的?

使用这个魔术函数的基本条件是类文件的文件名要和类的名字保持一致。
当程序执行到实例化某个类的时候,如果在实例化前没有引入这个类文件,那么就自动执行autoload()函数。

这个函数会根据实例化的类的名称来查找这个类文件的路径,当判断这个类文件路径下确实存在这个类文件后就执行 include 或者 require 来载入该类,然后程序继续执行,如果这个路径下不存在该文件时就提示错误。

15. 哪种OOP设置模式能让类在整个脚本里只实例化一次?(奇矩互动)

A. MVC
B. 代理模式
C.
状态模式
D. 抽象工厂模式
E. 单件模式
答案:E

16. 借助继承,我们可以创建其他类的派生类。在PHP中,子类最多可以继承几个父类?(奇矩互动)

A. 1个
B. 2个
C. 取决于系统资源
D. 3个
E. 想要几个有几个
答案:A

17. 执行以下代码,输出结果是(奇矩互动)
<?php
    abstract class a{
        function construct()
        {
            echo "a";
        }
    }

    $a = new a();
?>
ログイン後にコピー

A. a
B. 一个错误警告
C. 一个致命性的报错
答案:C 因为类a是抽象类,不能被实例化

18. 执行以下代码,输出结果是
<?php
class a{
    function construct(){
        echo "echo class a something";
    }
}

class b extends a{
    function construct(){
        echo "echo class b something";
    }
}

$a = new b();
?>
ログイン後にコピー

A. echo class a something echo class b something
B. echo class b something echo class a something
C. echo class a something
D. echo class b something
答案:D
类 b 继承自类 a,两个类都定义了构造函数,由于二者名字相同,所以子类中的构造函数覆盖了父类的构造函数,要想子类对象实例化时也执行父类的构造函数,需要在子类构造函数中使用 parent::construct()来显示调用父类构造函数。

19. 请定义一个名为MyClass的类,这个类只有一个静态方法justDoIt。(卓望)
<?php
class MyClass{
    public static function justDoIt(){

    }
}
?>
ログイン後にコピー
20. 只有该类才能访问该类的私有变量吗?(卓望)

是的

21. 写出你知道的几种设计模式,并用php代码实现其中一种。(卓望)

单例模式,工厂模式
单例模式 实现代码 见 第二题

总结:

我们在这个片文章中,我们主要给大家汇总了一下php面试题中关于面向对象中的一些常见面试问题,具体细节大家可以自己扩展,希望对你有所帮助!

相关推荐:

最让人容易出错的10道php面试题


PHPの面接質問におけるPHPコアテクノロジーの質問の共有


PHPの面接質問における筆記試験質問の要約


2017年のPHP面接の質問と回答の最も完全な要約


以上がPHP 面接の質問におけるオブジェクト指向の質問の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

See all articles