Преглед изворни кода

Little warning about __toString in documentation

Jérémy CROMBEZ пре 12 година
родитељ
комит
b6c4024df0
1 измењених фајлова са 25 додато и 0 уклоњено
  1. 25 0
      Resources/doc/reference/architecture.rst

+ 25 - 0
Resources/doc/reference/architecture.rst

@@ -157,6 +157,31 @@ Note that you can use both the Bundle:Controller format or a `service name`_ to
 specify what controller to load.
 
 
+Good to know
+------------
+
+Sometimes the bundle needs to display your model objects, in order to do it, objects are converted to string by using the `__toString`_ magic method.
+Take care to never return anything else than a string in this method.
+For example, if your method looks like that :
+
+.. code-block:: php
+
+    public function __toString()
+    {
+        return $this->getTitle();
+    }
+
+
+You can't be sure your object will *always* have a title when the bundle will want to convert it to a string.
+So in order to avoid any fatal error, you must return an empty string (or anything you prefer) for when the title is missing, like this :
+
+.. code-block:: php
+
+    public function __toString()
+    {
+        return $this->getTitle() ?: '';
+    }
 
 .. _`Django Project Website`: http://www.djangoproject.com/
 .. _`service name`: http://symfony.com/doc/2.0/cookbook/controller/service.html
+.. _`__toString`: http://www.php.net/manual/en/language.oop5.magic.php#object.tostring