Heim > Artikel > Backend-Entwicklung > Analyse objektorientierter Fragen in PHP-Interviewfragen
Objektorientiert ist ein unverzichtbarer Bestandteil des Erlernens von PHP. Wenn viele Freunde zu Vorstellungsgesprächen ins Unternehmen gehen, kennen sie die objektorientierten Fragen in den PHP-Interviewfragen nicht Was sollen wir tun? Im vorherigen Artikel haben wir auch PHP-Interviewfragen, schriftliche Testfragen und PHP-Kerntechnische Fragen vorgestellt.
public : Öffentlich, überall zugänglich
protected: Vererbt, Zugriff nur in dieser Klasse oder Unterklasse möglich, Zugriff an anderer Stelle nicht erlaubt
private: Privat, nur in dieser Klasse zugänglich, an anderer Stelle Zugriff nicht erlaubt
<?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(); ?>
<?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(); ?>
Ausgabeergebnis 10
sleep
serialisiert zuvor verwendet wakeup
wird aufgerufen, wenn unserialize aufgerufen wird toString
wird aufgerufen, wenn ein Objekt gedruckt wird set_state
wird aufgerufen, wenn var_export aufgerufen wird, und der Rückgabewert von set_state
wird verwendet als der Rückgabewert von var_export
construct
Konstruktor , aufgerufen, wenn das Objekt instanziiert wird destruct
Destruktor, aufgerufen, wenn das Objekt zerstört wird call
Das Objekt ruft eine Methode auf Wenn die Methode vorhanden ist, rufen Sie sie direkt auf. Wenn sie nicht vorhanden ist, wird die Funktion call
aufgerufen Wenn das Attribut vorhanden ist, wird die Funktion get
aufgerufen get
wird aufgerufen, wenn festgestellt wird, ob das Attribut eines Objekts vorhanden ist set
unset wird aufgerufen, wenn die Eigenschaften eines Objekts zugewiesen werden set
wird aufgerufen, wenn ein Objekt geklont wird isset
Wenn beim Instanziieren eines Objekts die entsprechende Klasse nicht vorhanden ist, wird diese Methode aufgerufen unset
Verwandte Themen: Bitte notieren Sie den Konstruktor und Destruktor von PHP5 clone
Konstruktor: autoload
5. Wie verwende ich die folgende Klasse und erkläre, was das Folgende bedeutet?construct
destruct
Doppelte MD5-Verschlüsselung
<?php class test{ function Get_test($num){ $num = md5(md5($num)."En"); return $num; } } $testObject = new test(); $encryption = $testObject->Get_test("itcast"); echo $encryption; ?>
Verwandte Frage: Wie deklariere ich eine Klasse namens „myclass“ ohne Methoden und Attribute?
class myclass{};
$obj= new myclass();Verwenden Sie die Anweisung: $this->propertyName, zum Beispiel:
<?php class mycalss{ private $propertyName; public function construct() { $this->propertyName = "value"; } } ?>B wird nicht funktionieren Definitionen müssen in einem einzelnen PHP-Block sein.
<?php class Foo{ ?> <?php function bar(){ print "bar"; } } ?>Antwort: B
10. Die Attribute einer Klasse können serialisiert und in der Sitzung gespeichert werden, sodass die gesamte Klasse später wiederhergestellt werden kann .
serialize() und unserialize()
11 Wenn die abgeleitete Klasse in PHP eine Funktion mit demselben Namen wie die übergeordnete Klasse hat, ersetzt die Funktion der abgeleiteten Klasse die Funktion der übergeordneten Klasse Klasse, und das Programmergebnis ist
<?php class A{ function disName(){ echo "Picachu"; } } class B extends A{ var $tmp; function disName(){ echo "Doraemon"; } } $cartoon = New B; $cartoon->disName(); ?>
Abstrakte Klasse
ist eine Klasse, die nicht instanziiert werden kann und nur als übergeordnete Klasse anderer Klassen verwendet werden kann. Abstrakte Klassen werden über das Schlüsselwort abstract deklariert.
Abstrakte Klassen ähneln gewöhnlichen Klassen. Sie enthalten beide Mitgliedsvariablen und Mitgliedsmethoden. Der Unterschied zwischen den beiden besteht darin, dass eine abstrakte Methode von Natur aus keinen Methodenkörper hat von Unterklassen überschrieben werden.
Das Format der abstrakten Methode ist: abstrakte Funktion abstractMethod();
接口是通过 interface 关键字来声明的,接口中的成员常量和方法都是 public 的,方法可以不写关键字 public,接口中的方法也是没有方法体。接口中的方法也天生就是要被子类实现的。
抽象类和接口实现的功能十分相似,最大的不同是接口能实现多继承。在应用中选择抽象类还是接口要看具体实现。
子类继承抽象类使用 extends,子类实现接口使用 implements。
类中的常量也就是成员常量,常量就是不会改变的量,是一个恒值。定义常量使用关键字 const,例如:const PI = 3.1415326;
无论是类内还是类外,常量的访问和变量是不一样的,常量不需要实例化对象,访问常量的格式都是类名加作用域操作符号(双冒号)来调用,即:类名:: 类常量名
。
使用这个魔术函数的基本条件是类文件的文件名要和类的名字保持一致。
当程序执行到实例化某个类的时候,如果在实例化前没有引入这个类文件,那么就自动执行autoload()
函数。
这个函数会根据实例化的类的名称来查找这个类文件的路径,当判断这个类文件路径下确实存在这个类文件后就执行 include 或者 require 来载入该类,然后程序继续执行,如果这个路径下不存在该文件时就提示错误。
A. MVC
B. 代理模式
C. 状态模式
D. 抽象工厂模式
E. 单件模式
答案:E
A. 1个
B. 2个
C. 取决于系统资源
D. 3个
E. 想要几个有几个
答案:A
<?php abstract class a{ function construct() { echo "a"; } } $a = new a(); ?>
A. a
B. 一个错误警告
C. 一个致命性的报错
答案:C 因为类a是抽象类,不能被实例化
<?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()
来显示调用父类构造函数。
<?php class MyClass{ public static function justDoIt(){ } } ?>
是的
单例模式,工厂模式
单例模式 实现代码 见 第二题
总结:
我们在这个片文章中,我们主要给大家汇总了一下php面试题中关于面向对象中的一些常见面试问题,具体细节大家可以自己扩展,希望对你有所帮助!
相关推荐:
Das obige ist der detaillierte Inhalt vonAnalyse objektorientierter Fragen in PHP-Interviewfragen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!