Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#68 Actualización de la traducción de language/oop5/final.xml #107

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 45 additions & 51 deletions language/oop5/final.xml
Original file line number Diff line number Diff line change
@@ -1,69 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 5e8652131e898cd3d02cd26eeb26da718a6aaf65 Maintainer: chuso Status: ready -->
<!-- EN-Revision: 214912bef853e01a194fe627f109d132f7602bab Maintainer: chuso Status: ready -->
<!-- Reviewed: no Maintainer: andresdzphp -->
<sect1 xml:id="language.oop5.final" xmlns="http://docbook.org/ns/docbook">
<title>Palabra clave Final</title>
<para>
PHP introduce la palabra clave final, que impide que las clases
hijas sobrescriban un método, antecediendo su definición con <literal>final</literal>.
Si la propia clase se define como final, entonces no se podrá heredar de ella.
</para>
<para>
<example>
<title>Ejemplo de métodos Final</title>
<programlisting role="php">
<sect1 xml:id="language.oop5.final" xmlns="http://docbook.org/ns/docbook">
<title>Palabra clave Final</title>
<para>
PHP introduce la palabra clave final, que impide que las clases
hijas sobrescriban un método, antecediendo su definición con <literal>final</literal>.
Si la propia clase se define como final, entonces no se podrá heredar de ella.
</para>
<para>
<example>
<title>Ejemplo de métodos Final</title>
<programlisting role="php">
Comment on lines +4 to +14
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The indent seems wrong here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oks,
I will check that.

Thank you!

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also please rebase on latest master, the build should be passing now.

<![CDATA[
<?php
class BaseClass {
public function test() {
echo "llamada a BaseClass::test()\n";
echo "Llamada a BaseClass::test()\n";
}

final public function moreTesting() {
echo "llamada a BaseClass::moreTesting()\n";
echo "Llamada a BaseClass::moreTesting()\n";
}
}

class ChildClass extends BaseClass {
public function moreTesting() {
echo "llamada a ChildClass::moreTesting()\n";
echo "Llamada a ChildClass::moreTesting()\n";
}
}
// Devuelve un error Fatal: Cannot override final method BaseClass::moreTesting()
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>Ejemplo de clase Final</title>
<programlisting role="php">
</programlisting>
</example>
</para>
<example>
<title>Ejemplo de propiedad Final desde PHP 8.4.0</title>
<programlisting role="php">
<![CDATA[
<?php
final class BaseClass {
public function test() {
echo "llamada a BaseClass::test()\n";
}

// Aquí no importa si definimos una función como final o no
final public function moreTesting() {
echo "llamada a BaseClass::moreTesting()\n";
}
class BaseClass {
final protected string $test;
}

class ChildClass extends BaseClass {
public string $test;
}
// Devuelve un error Fatal: Class ChildClass may not inherit from final class (BaseClass)
// Devuelve un error Fatal: Cannot override final property BaseClass::$test
?>
]]>
</programlisting>
</example>
</para>
<para>
<example xml:id="language.oop5.final.example.php81">
<title>Ejemplo de constantes finales a partir de PHP 8.1.0</title>
<programlisting role="php">
</programlisting>
</example>
<example xml:id="language.oop5.final.example.php81">
<title>Ejemplo de constantes finales a partir de PHP 8.1.0</title>
<programlisting role="php">
<![CDATA[
<?php
class Foo
Expand All @@ -79,19 +70,22 @@ class Bar extends Foo
// Fatal error: Bar::X cannot override final constant Foo::X
?>
]]>
</programlisting>
</example>
</para>
</programlisting>
</example>

<note>
<simpara>
Las propiedades no pueden declararse como finales: sólo las clases, métodos y constantes (a partir de PHP 8.1.0) pueden declararse como finales.
</simpara>
<simpara>
A partir de PHP 8.0.0, los métodos privados no pueden ser declarados finales excepto el constructor.
</simpara>
</note>
</sect1>
<note>
<simpara>
Desde PHP 8.0.0, los métodos privados no pueden declararse como finales,
excepto el <link linkend="language.oop5.decon.constructor">constructor</link>.
</simpara>
</note>
<note>
<simpara>
Una propiedad que se declara <link linkend="language.oop5.visibility-members-aviz"><literal>private(set)</literal></link>
es implícitamente <literal>final</literal>.
</simpara>
</note>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
Expand Down
Loading