Files
php-doc-ru/reference/classobj/functions/get-class.xml
2024-03-31 15:17:05 +03:00

239 lines
6.8 KiB
XML
Raw Permalink 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: 4f36c26a72c40b16e955c3c1c88041910932d0bf Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.get-class" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>get_class</refname>
<refpurpose>Возвращает имя класса, которому принадлежит объект</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>string</type><methodname>get_class</methodname>
<methodparam choice="opt"><type>object</type><parameter>object</parameter></methodparam>
</methodsynopsis>
<para>
Функция получает имя класса объекта <parameter>object</parameter>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>object</parameter></term>
<listitem>
<para>
Тестируемый объект.
</para>
<note>
<simpara>
С PHP 7.2.0 явная передача &null; в параметр <parameter>object</parameter>
запрещена и выдаёт ошибку уровня <constant>E_WARNING</constant>.
С PHP 8.0.0 функция выбрасывает исключение <classname>TypeError</classname>
при передаче в параметр значения &null;.
</simpara>
</note>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Функция возвращает имя класса, которому принадлежит экземпляр <parameter>object</parameter>.
</para>
<para>
Функция вернёт полное название пространства имён, если объект
<parameter>object</parameter> — экземпляр класса из пространства имён.
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Функция <function>get_class</function> выбрасывает исключение
<classname>TypeError</classname>, если функцию вызывают не с объектом.
До PHP 8.0.0 функция выдавала ошибку уровня <constant>E_WARNING</constant>.
</para>
<para>
Функция <function>get_class</function> выбрасывает исключение <classname>Error</classname>,
если функцию вызывают вне класса без аргументов.
До PHP 8.0.0 функция выдавала ошибку уровня <constant>E_WARNING</constant>.
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.3.0</entry>
<entry>
Функция <function>get_class</function> теперь выдаёт ошибку
уровня <constant>E_DEPRECATED</constant>, если функцию вызвали без аргументов;
раньше вызов функции внутри класса возвращал название класса.
</entry>
</row>
<row>
<entry>8.0.0</entry>
<entry>
Вызов функции вне класса без аргументов выбрасывает исключение <classname>Error</classname>.
Раньше функция выдавала ошибку уровня <constant>E_WARNING</constant> и возвращала значение &false;.
</entry>
</row>
<row>
<entry>7.2.0</entry>
<entry>
До этой версии значением объекта <parameter>object</parameter> по умолчанию
было значение &null;, и это давало тот же эффект, что и вызов функции без аргументов.
Значение &null; удалили как значение по умолчанию для объекта <parameter>object</parameter>
и оно больше не допустимо.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования функции <function>get_class</function></title>
<programlisting role="php">
<![CDATA[
<?php
class foo
{
function name()
{
echo "Меня зовут " , get_class($this) , "\n";
}
}
// Создаём объект
$bar = new foo();
// Внешний вызов
echo "Его имя " , get_class($bar) , "\n";
// Внутренний вызов
$bar->name();
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
Его имя foo
Меня зовут foo
]]>
</screen>
</example>
<example>
<title>Вызов функции <function>get_class</function> в родительском классе</title>
<programlisting role="php">
<![CDATA[
<?php
abstract class bar
{
public function __construct()
{
var_dump(get_class($this));
var_dump(get_class());
}
}
class foo extends bar {}
new foo;
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
string(3) "foo"
string(3) "bar"
]]>
</screen>
</example>
<example>
<title>
Вызов функции <function>get_class</function> с классами в пространствах имён
</title>
<programlisting role="php">
<![CDATA[
<?php
namespace Foo\Bar;
class Baz
{
public function __construct() {}
}
$baz = new \Foo\Bar\Baz;
var_dump(get_class($baz));
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
string(11) "Foo\Bar\Baz"
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>get_called_class</function></member>
<member><function>get_parent_class</function></member>
<member><function>gettype</function></member>
<member><function>get_debug_type</function></member>
<member><function>is_subclass_of</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
-->