-
Notifications
You must be signed in to change notification settings - Fork 146
/
is-subclass-of.xml
212 lines (197 loc) · 5.77 KB
/
is-subclass-of.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: c44475e1fafcbee203ed4935a6d5d7a01379fcdc Maintainer: yannick Status: ready -->
<!-- Reviewed: yes Maintainer: pmartin -->
<refentry xml:id="function.is-subclass-of" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>is_subclass_of</refname>
<refpurpose>Détermine si un objet est une sous-classe d'une classe donnée ou l'implémente</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>bool</type><methodname>is_subclass_of</methodname>
<methodparam><type>mixed</type><parameter>object_or_class</parameter></methodparam>
<methodparam><type>string</type><parameter>class</parameter></methodparam>
<methodparam choice="opt"><type>bool</type><parameter>allow_string</parameter><initializer>&true;</initializer></methodparam>
</methodsynopsis>
<para>
Vérifie si l'objet <parameter>object_or_class</parameter> a la classe
<parameter>class</parameter> parmi ses parents ou l'implémente.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>object_or_class</parameter></term>
<listitem>
<para>
Un nom de classe ou une instance d'un objet.
Aucune erreur n'est générée si la classe n'existe pas.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>class</parameter></term>
<listitem>
<para>
Le nom de la classe
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>allow_string</parameter></term>
<listitem>
<para>
Si ce paramètre est défini à &false;, un nom de classe sous forme
de chaîne de caractères dans le paramètre <parameter>object_or_class</parameter>
n'est pas autorisé. Ceci permet d'éviter d'appeler l'autoloader si la classe
n'existe pas.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Cette fonction retourne &true; si l'objet <parameter>object_or_class</parameter>
est une instance d'une classe qui est une sous-classe de
<parameter>class</parameter>, &false; sinon.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Exemple avec <function>is_subclass_of</function></title>
<programlisting role="php">
<![CDATA[
<?php
// Définit une classe
class WidgetFactory
{
var $oink = 'moo';
}
// Définit une sous-classe
class WidgetFactory_Child extends WidgetFactory
{
var $oink = 'oink';
}
// Création d'un nouvel objet
$WF = new WidgetFactory();
$WFC = new WidgetFactory_Child();
if (is_subclass_of($WFC, 'WidgetFactory')) {
echo "oui, \$WFC est une sous-classe de la classe WidgetFactory\n";
} else {
echo "non, \$WFC n'est pas une sous-classe de la classe WidgetFactory\n";
}
if (is_subclass_of($WF, 'WidgetFactory')) {
echo "oui, \$WF est une sous-classe de la classe WidgetFactory\n";
} else {
echo "non, \$WF n'est pas une sous-classe de la classe WidgetFactory\n";
}
if (is_subclass_of('WidgetFactory_Child', 'WidgetFactory')) {
echo "oui, WidgetFactory_Child est une sous-classe de la classe WidgetFactory\n";
} else {
echo "non, WidgetFactory_Child n'est pas une sous-classe de la classe WidgetFactory\n";
}
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
oui, $WFC est une sous-classe de la classe WidgetFactory
non, $WF n'est pas une sous-classe de la classe WidgetFactory
oui, WidgetFactory_Child est une sous-classe de la classe WidgetFactory
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Exemple avec <function>is_subclass_of</function> en utilisant une interface</title>
<programlisting role="php">
<![CDATA[
<?php
// Définition de l'interface
interface MyInterface
{
public function MyFunction();
}
// Définition de l'implémentation de la classe de l'interface
class MyClass implements MyInterface
{
public function MyFunction()
{
return "MyClass implémente MyInterface!";
}
}
// Instanciation de l'objet
$my_object = new MyClass;
// Fonctionne depuis PHP 5.3.7
// Test utilisant l'objet de l'instance de la classe
if (is_subclass_of($my_object, 'MyInterface')) {
echo "Oui, \$my_object est une sous-classe de MyInterface\n";
} else {
echo "Non, \$my_object n'est pas une sous-classe de MyInterface\n";
}
// Test utilisant le nom de la classe sous forme de chaîne de caractères
if (is_subclass_of('MyClass', 'MyInterface')) {
echo "Oui, MyClass est une sous-classe de MyInterface\n";
} else {
echo "Non, MyClass n'est pas une sous-classe de MyInterface\n";
}
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
Oui, $my_object est une sous-classe de MyInterface
Oui, MyClass est une sous-classe de MyInterface
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
¬e.uses-autoload;
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>get_class</function></member>
<member><function>get_parent_class</function></member>
<member><function>is_a</function></member>
<member><function>class_parents</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->