検索
ホームページバックエンド開発PHPチュートリアル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>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 までご連絡ください。
PHP:サーバー側のスクリプト言語の紹介PHP:サーバー側のスクリプト言語の紹介Apr 16, 2025 am 12:18 AM

PHPは、動的なWeb開発およびサーバー側のアプリケーションに使用されるサーバー側のスクリプト言語です。 1.PHPは、編集を必要とせず、迅速な発展に適した解釈言語です。 2。PHPコードはHTMLに組み込まれているため、Webページの開発が簡単になりました。 3。PHPプロセスサーバー側のロジック、HTML出力を生成し、ユーザーの相互作用とデータ処理をサポートします。 4。PHPは、データベースと対話し、プロセスフォームの送信、サーバー側のタスクを実行できます。

PHPとWeb:その長期的な影響を調査しますPHPとWeb:その長期的な影響を調査しますApr 16, 2025 am 12:17 AM

PHPは過去数十年にわたってネットワークを形成しており、Web開発において重要な役割を果たし続けます。 1)PHPは1994年に発信され、MySQLとのシームレスな統合により、開発者にとって最初の選択肢となっています。 2)コア関数には、動的なコンテンツの生成とデータベースとの統合が含まれ、ウェブサイトをリアルタイムで更新し、パーソナライズされた方法で表示できるようにします。 3)PHPの幅広いアプリケーションとエコシステムは、長期的な影響を促進していますが、バージョンの更新とセキュリティの課題にも直面しています。 4)PHP7のリリースなど、近年のパフォーマンスの改善により、現代の言語と競合できるようになりました。 5)将来的には、PHPはコンテナ化やマイクロサービスなどの新しい課題に対処する必要がありますが、その柔軟性とアクティブなコミュニティにより適応性があります。

なぜPHPを使用するのですか?利点と利点が説明されましたなぜPHPを使用するのですか?利点と利点が説明されましたApr 16, 2025 am 12:16 AM

PHPの中心的な利点には、学習の容易さ、強力なWeb開発サポート、豊富なライブラリとフレームワーク、高性能とスケーラビリティ、クロスプラットフォームの互換性、費用対効果が含まれます。 1)初心者に適した学習と使用が簡単。 2)Webサーバーとの適切な統合および複数のデータベースをサポートします。 3)Laravelなどの強力なフレームワークを持っています。 4)最適化を通じて高性能を達成できます。 5)複数のオペレーティングシステムをサポートします。 6)開発コストを削減するためのオープンソース。

神話を暴く:PHPは本当に死んだ言語ですか?神話を暴く:PHPは本当に死んだ言語ですか?Apr 16, 2025 am 12:15 AM

PHPは死んでいません。 1)PHPコミュニティは、パフォーマンスとセキュリティの問題を積極的に解決し、PHP7.xはパフォーマンスを向上させます。 2)PHPは最新のWeb開発に適しており、大規模なWebサイトで広く使用されています。 3)PHPは学習しやすく、サーバーはうまく機能しますが、タイプシステムは静的言語ほど厳格ではありません。 4)PHPは、コンテンツ管理とeコマースの分野で依然として重要であり、エコシステムは進化し続けています。 5)OpcacheとAPCを介してパフォーマンスを最適化し、OOPと設計パターンを使用してコードの品質を向上させます。

PHP対Pythonの議論:どちらが良いですか?PHP対Pythonの議論:どちらが良いですか?Apr 16, 2025 am 12:03 AM

PHPとPythonには独自の利点と短所があり、選択はプロジェクトの要件に依存します。 1)PHPは、Web開発に適しており、学習しやすく、豊富なコミュニティリソースですが、構文は十分に近代的ではなく、パフォーマンスとセキュリティに注意を払う必要があります。 2)Pythonは、簡潔な構文と学習が簡単なデータサイエンスと機械学習に適していますが、実行速度とメモリ管理にはボトルネックがあります。

PHPの目的:動的なWebサイトの構築PHPの目的:動的なWebサイトの構築Apr 15, 2025 am 12:18 AM

PHPは動的なWebサイトを構築するために使用され、そのコア関数には次のものが含まれます。1。データベースに接続することにより、動的コンテンツを生成し、リアルタイムでWebページを生成します。 2。ユーザーのインタラクションを処理し、提出をフォームし、入力を確認し、操作に応答します。 3.セッションとユーザー認証を管理して、パーソナライズされたエクスペリエンスを提供します。 4.パフォーマンスを最適化し、ベストプラクティスに従って、ウェブサイトの効率とセキュリティを改善します。

PHP:データベースとサーバー側のロジックの処理PHP:データベースとサーバー側のロジックの処理Apr 15, 2025 am 12:15 AM

PHPはMySQLIおよびPDO拡張機能を使用して、データベース操作とサーバー側のロジック処理で対話し、セッション管理などの関数を介してサーバー側のロジックを処理します。 1)MySQLIまたはPDOを使用してデータベースに接続し、SQLクエリを実行します。 2)セッション管理およびその他の機能を通じて、HTTPリクエストとユーザーステータスを処理します。 3)トランザクションを使用して、データベース操作の原子性を確保します。 4)SQLインジェクションを防ぎ、例外処理とデバッグの閉鎖接続を使用します。 5)インデックスとキャッシュを通じてパフォーマンスを最適化し、読みやすいコードを書き、エラー処理を実行します。

PHPでのSQL注入をどのように防止しますか? (準備された声明、PDO)PHPでのSQL注入をどのように防止しますか? (準備された声明、PDO)Apr 15, 2025 am 12:15 AM

PHPで前処理ステートメントとPDOを使用すると、SQL注入攻撃を効果的に防ぐことができます。 1)PDOを使用してデータベースに接続し、エラーモードを設定します。 2)準備方法を使用して前処理ステートメントを作成し、プレースホルダーを使用してデータを渡し、メソッドを実行します。 3)結果のクエリを処理し、コードのセキュリティとパフォーマンスを確保します。

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Mac版

SublimeText3 Mac版

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