mirror of
https://github.com/macintoshplus/doc-fr.git
synced 2026-03-25 17:32:07 +01:00
159 lines
4.8 KiB
XML
159 lines
4.8 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<!-- EN-Revision: c44475e1fafcbee203ed4935a6d5d7a01379fcdc Maintainer: yannick Status: ready -->
|
|
<!-- Reviewed: yes -->
|
|
<refentry xml:id="closure.bindto" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
<refnamediv>
|
|
<refname>Closure::bindTo</refname>
|
|
<refpurpose>
|
|
Duplique la fermeture avec un nouvel objet lié et un nouveau contexte de classe.
|
|
</refpurpose>
|
|
</refnamediv>
|
|
|
|
<refsect1 role="description">
|
|
&reftitle.description;
|
|
<methodsynopsis>
|
|
<modifier>public</modifier> <type class="union"><type>Closure</type><type>null</type></type><methodname>Closure::bindTo</methodname>
|
|
<methodparam><type class="union"><type>object</type><type>null</type></type><parameter>newThis</parameter></methodparam>
|
|
<methodparam choice="opt"><type class="union"><type>object</type><type>string</type><type>null</type></type><parameter>newScope</parameter><initializer>"static"</initializer></methodparam>
|
|
</methodsynopsis>
|
|
<para>
|
|
Crée et retourne une nouvelle <link linkend="functions.anonymous">fonction anonyme
|
|
</link> avec le même corps et les même variables liées que l'originale, mais avec un objet lié
|
|
qui peut être différent, et un nouveau contexte de classe.
|
|
</para>
|
|
|
|
<para>
|
|
L'objet lié détermine la valeur que <literal>$this</literal> aura dans le corps de la fonction,
|
|
et le contexte de classe représente une classe qui détermine à quels membres privés et protégés
|
|
la fonction anonyme aura accès. Autrement dit, les propriétés qui seront visibles seront les
|
|
mêmes que si la fonction anonyme était une méthode de la classe passée via le paramètre
|
|
<parameter>newScope</parameter>.
|
|
</para>
|
|
|
|
<para>
|
|
Les fermetures statiques ne peuvent pas avoir d'objet lié (la valeur du paramètre
|
|
<parameter>newThis</parameter> devrait être &null;), mais le contexte de classe peut,
|
|
lui, être changé.
|
|
</para>
|
|
|
|
<para>
|
|
Cette fonction va vérifier qu'une fermeture non-statique à laquelle on passe
|
|
un contexte d'objet deviendra liée à cet objet (et ne sera donc plus non-statique),
|
|
et vice-versa. Dans ce but, les fermetures non-statiques auxquelles on passe un
|
|
contexte de classe mais &null; comme contexte objet seront rendues statiques, et
|
|
inversement.
|
|
</para>
|
|
|
|
<note>
|
|
<para>
|
|
Si vous voulez seulement dupliquer la fonction anonyme, vous pouvez utiliser
|
|
<link linkend="language.oop5.cloning">le clonage</link> à la place.
|
|
</para>
|
|
</note>
|
|
|
|
</refsect1>
|
|
|
|
<refsect1 role="parameters">
|
|
&reftitle.parameters;
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><parameter>newThis</parameter></term>
|
|
<listitem>
|
|
<para>
|
|
L'objet auquel lier la fonction anonyme, ou &null; pour une fermeture statique.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><parameter>newScope</parameter></term>
|
|
<listitem>
|
|
<para>
|
|
Le contexte de classe à associer à la fermeture, ou 'static' pour conserver le
|
|
contexte actuel. Si un objet est passé, son type sera utilisé.
|
|
Ceci determine la visibilité des méthodes protégées et privées de l'objet lié.
|
|
Il n'est pas autorisé de passer (un objet d') une classe interne pour
|
|
ce paramètre.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</refsect1>
|
|
|
|
<refsect1 role="returnvalues">
|
|
&reftitle.returnvalues;
|
|
<para>
|
|
Retourne la nouvelle fermeture sous la forme d'un objet <classname>Closure</classname>,
|
|
ou &null; en cas d'erreur.
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="examples">
|
|
&reftitle.examples;
|
|
<example>
|
|
<title>Exemple <function>Closure::bindTo</function></title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
class A {
|
|
function __construct($val) {
|
|
$this->val = $val;
|
|
}
|
|
function getClosure() {
|
|
//retourne une fermeture liée à cet objet et ce contexte
|
|
return function() { return $this->val; };
|
|
}
|
|
}
|
|
|
|
$ob1 = new A(1);
|
|
$ob2 = new A(2);
|
|
|
|
$cl = $ob1->getClosure();
|
|
echo $cl(), "\n";
|
|
$cl = $cl->bindTo($ob2);
|
|
echo $cl(), "\n";
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
&example.outputs.similar;
|
|
<screen>
|
|
<![CDATA[
|
|
1
|
|
2
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</refsect1>
|
|
|
|
|
|
<refsect1 role="seealso">
|
|
&reftitle.seealso;
|
|
<simplelist>
|
|
<member><link linkend="functions.anonymous">Fonctions anonymes</link></member>
|
|
<member><methodname>Closure::bind</methodname></member>
|
|
</simplelist>
|
|
</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
|
|
-->
|