Files
php-doc-ru/reference/classobj/functions/is-subclass-of.xml
Sergey Panteleev 300ffa98fb Исправление форматирования (#362)
[skip-spellcheck]
[skip-lint]
2021-10-21 09:47:52 +03:00

209 lines
6.3 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: c44475e1fafcbee203ed4935a6d5d7a01379fcdc Maintainer: shein Status: ready -->
<!-- Reviewed: yes Maintainer: rjhdby -->
<refentry xml:id="function.is-subclass-of" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>is_subclass_of</refname>
<refpurpose>Проверяет, содержит ли объект в своём дереве предков указанный класс либо прямо реализует его</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>
Проверяет, содержит ли объект <parameter>object_or_class</parameter> в своём дереве
предков класс <parameter>class</parameter> либо прямо реализует его.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>object_or_class</parameter></term>
<listitem>
<para>
Имя класса или экземпляр объекта. В случае отсутствия такого класса
никакой ошибки сгенерировано не будет.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>class</parameter></term>
<listitem>
<para>
Имя класса
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>allow_string</parameter></term>
<listitem>
<para>
Если параметр установлен в false, то не допускается имя класса в виде строки
в качестве параметра <parameter>object_or_class</parameter>. Это также предотвращает вызов
автозагрузчика, если класс не существует.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Эта функция возвращает &true;, если объект <parameter>object_or_class</parameter>
принадлежит к классу, наследующему от <parameter>class</parameter>, иначе
она возвращает &false;.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>is_subclass_of</function></title>
<programlisting role="php">
<![CDATA[
<?php
// объявляем класс
class WidgetFactory
{
var $oink = 'moo';
}
// объявляем наследника
class WidgetFactory_Child extends WidgetFactory
{
var $oink = 'oink';
}
// создаём новый объект
$WF = new WidgetFactory();
$WFC = new WidgetFactory_Child();
if (is_subclass_of($WFC, 'WidgetFactory')) {
echo "да, \$WFC наследует WidgetFactory\n";
} else {
echo "нет, \$WFC не наследует WidgetFactory\n";
}
if (is_subclass_of($WF, 'WidgetFactory')) {
echo "да, \$WF наследует WidgetFactory\n";
} else {
echo "нет, \$WF не наследует WidgetFactory\n";
}
if (is_subclass_of('WidgetFactory_Child', 'WidgetFactory')) {
echo "да, WidgetFactory_Child наследует WidgetFactory\n";
} else {
echo "нет, WidgetFactory_Child не наследует WidgetFactory\n";
}
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
да, $WFC наследует WidgetFactory
нет, $WF не наследует WidgetFactory
да, WidgetFactory_Child наследует WidgetFactory
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Пример использования <function>is_subclass_of</function> с интерфейсами</title>
<programlisting role="php">
<![CDATA[
<?php
// Определяем интерфейс
interface MyInterface
{
public function MyFunction();
}
// Определяем класс с реализацией интерфейса
class MyClass implements MyInterface
{
public function MyFunction()
{
return "MyClass реализует MyInterface!";
}
}
// Создаём объект
$my_object = new MyClass;
// Код ниже работает с PHP 5.3.7
// Проверка с помощью экземпляра объекта
if (is_subclass_of($my_object, 'MyInterface')) {
echo "Да, \$my_object является подклассом MyInterface\n";
} else {
echo "Нет, \$my_object не является подклассом MyInterface\n";
}
// Проверка с помощью имени класса в виде строки
if (is_subclass_of('MyClass', 'MyInterface')) {
echo "Да, MyClass является подклассом MyInterface\n";
} else {
echo "Нет, MyClass не является подклассом MyInterface\n";
}
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
Да, $my_object является подклассом MyInterface
Да, MyClass является подклассом MyInterface
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
&note.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
-->