L'orientation objet est un élément indispensable de l'apprentissage du PHP. De nombreux amis ont peu de connaissances en matière d'orientation objet. Par conséquent, lorsque de nombreux amis se rendent dans l'entreprise pour des entretiens, ils ne connaissent pas les questions orientées objet dans les questions d'entretien PHP. .Que devons-nous faire ?Dans l'article précédent, nous avons également présenté les questions d'entretien PHP, les questions de test écrit et les questions sur la technologie de base PHP. Aujourd'hui, nous allons vous montrer quelles sont les questions orientées objet dans cette question d'entretien PHP ?
public : Public, accessible n'importe où
protected : Hérité, accessible uniquement dans cette classe ou sous-classe, l'accès n'est pas autorisé ailleurs
private : Private, accessible uniquement dans cette classe, ailleurs Accès non autorisé
<?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(); ?>
Résultat de sortie 10<. 🎜 >
[!]4. Quelles sont les fonctions la sérialisation était précédemment utilisé sleep
est appelé lorsque unserialize est appelé wakeup
est appelé lors de l'impression d'un objet toString
est appelé lorsque var_export est appelé, et la valeur de retour de set_state
est utilisée comme la valeur de retour de var_export set_state
construct
Constructeur , appelé lorsque l'objet est instancié
Destructeur, appelé lorsque l'objet est détruit destruct
L'objet appelle une méthode , si la méthode existe, appelez-la directement. Si elle n'existe pas, appelez la fonction call
call
Lors de la lecture d'un attribut d'objet, si l'attribut existe, il reviendra directement. existe, appelez la fonction get
get
Lors de la définition des attributs d'un objet, si l'attribut existe, la valeur est attribuée directement. S'il n'existe pas, la fonction set
est appelée. set
est appelé lors de la détection de l'existence de l'attribut d'un objet isset
unset Il est appelé lors de l'attribution des propriétés d'un objet unset
Il est appelé lors du clonage d'un objet clone
Lors de l'instanciation d'un objet, si la classe correspondante n'existe pas, cette méthode est appelée autoload
Sujets connexes : Veuillez noter le constructeur et le destructeur de php5
Destructeur : construct
destruct
5. Comment utiliser la classe suivante et expliquer Que signifie ce qui suit ?
<?php class test{ function Get_test($num){ $num = md5(md5($num)."En"); return $num; } } $testObject = new test(); $encryption = $testObject->Get_test("itcast"); echo $encryption; ?>
6. déclarer une classe nommée « maclasse » sans méthodes ni propriétés ? (Yahoo)
Question connexe : Comment déclarer une classe nommée « maclasse » sans méthodes ni attributs ?class myclass{};
$obj= new myclass();
9. Le code ci-dessous _ Parce que.(Tencent)
<?php class mycalss{ private $propertyName; public function construct() { $this->propertyName = "value"; } } ?>
<?php class Foo{ ?> <?php function bar(){ print "bar"; } } ?>
C. ne fonctionnera pas, les définitions de classe doivent être dans un seul fichier mais peuvent être dans plusieurs blocs PHP.
D fonctionnera, les définitions de classe peuvent être divisées en plusieurs. fichiers et plusieurs blocs PHP.
Réponse : B
10. Les attributs d'une classe peuvent être sérialisés et enregistrés dans la session, afin que la classe entière puisse être restaurée ultérieurement. .
<?php class A{ function disName(){ echo "Picachu"; } } class B extends A{ var $tmp; function disName(){ echo "Doraemon"; } } $cartoon = New B; $cartoon->disName(); ?>
C disName
Doraemon
E.
12. Quelle est la différence entre une interface et une classe abstraite ?
Les classes abstraites sont similaires aux classes ordinaires. Elles contiennent toutes deux des variables membres et des méthodes membres. La différence entre les deux est qu'une classe abstraite doit contenir au moins une méthode abstraite. être remplacé par des sous-classes. Le format de la méthode abstraite est : fonction abstraite 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面试题中关于面向对象中的一些常见面试问题,具体细节大家可以自己扩展,希望对你有所帮助!
相关推荐:
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!