minor #28301 Fix code examples in PHPDoc (maidmaid)

This PR was merged into the 2.8 branch.

Discussion
----------

Fix code examples in PHPDoc

| Q             | A
| ------------- | ---
| Branch?       | 2.8
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | /
| License       | MIT
| Doc PR        | /

This PR properly indents the code examples in PHPDoc for a clean render.

Commits
-------

1afb043dc5 Fix code examples in PHPDoc
This commit is contained in:
Fabien Potencier 2018-08-30 18:22:36 +02:00
commit fb9ccc0fec
38 changed files with 245 additions and 312 deletions

View File

@ -27,13 +27,14 @@ use Symfony\Component\Security\Core\Exception\TokenNotFoundException;
* and to do the conversion of the datetime column. * and to do the conversion of the datetime column.
* *
* In order to use this class, you need the following table in your database: * In order to use this class, you need the following table in your database:
* CREATE TABLE `rememberme_token` ( *
* `series` char(88) UNIQUE PRIMARY KEY NOT NULL, * CREATE TABLE `rememberme_token` (
* `value` char(88) NOT NULL, * `series` char(88) UNIQUE PRIMARY KEY NOT NULL,
* `lastUsed` datetime NOT NULL, * `value` char(88) NOT NULL,
* `class` varchar(100) NOT NULL, * `lastUsed` datetime NOT NULL,
* `username` varchar(200) NOT NULL * `class` varchar(100) NOT NULL,
* ); * `username` varchar(200) NOT NULL
* );
*/ */
class DoctrineTokenProvider implements TokenProviderInterface class DoctrineTokenProvider implements TokenProviderInterface
{ {

View File

@ -19,11 +19,10 @@ use Twig\TokenParser\AbstractTokenParser;
* Token Parser for the 'dump' tag. * Token Parser for the 'dump' tag.
* *
* Dump variables with: * Dump variables with:
* <pre> *
* {% dump %} * {% dump %}
* {% dump foo %} * {% dump foo %}
* {% dump foo, bar %} * {% dump foo, bar %}
* </pre>
* *
* @author Julien Galenski <julien.galenski@gmail.com> * @author Julien Galenski <julien.galenski@gmail.com>
*/ */

View File

@ -38,17 +38,17 @@ trait MicroKernelTrait
* *
* You can register extensions: * You can register extensions:
* *
* $c->loadFromExtension('framework', array( * $c->loadFromExtension('framework', array(
* 'secret' => '%secret%' * 'secret' => '%secret%'
* )); * ));
* *
* Or services: * Or services:
* *
* $c->register('halloween', 'FooBundle\HalloweenProvider'); * $c->register('halloween', 'FooBundle\HalloweenProvider');
* *
* Or parameters: * Or parameters:
* *
* $c->setParameter('halloween', 'lot of fun'); * $c->setParameter('halloween', 'lot of fun');
* *
* @param ContainerBuilder $c * @param ContainerBuilder $c
* @param LoaderInterface $loader * @param LoaderInterface $loader

View File

@ -232,18 +232,14 @@ class FormHelper extends Helper
* Use this helper for CSRF protection without the overhead of creating a * Use this helper for CSRF protection without the overhead of creating a
* form. * form.
* *
* <code> * echo $view['form']->csrfToken('rm_user_'.$user->getId());
* echo $view['form']->csrfToken('rm_user_'.$user->getId());
* </code>
* *
* Check the token in your action using the same intention. * Check the token in your action using the same intention.
* *
* <code> * $csrfProvider = $this->get('security.csrf.token_generator');
* $csrfProvider = $this->get('security.csrf.token_generator'); * if (!$csrfProvider->isCsrfTokenValid('rm_user_'.$user->getId(), $token)) {
* if (!$csrfProvider->isCsrfTokenValid('rm_user_'.$user->getId(), $token)) { * throw new \RuntimeException('CSRF attack detected.');
* throw new \RuntimeException('CSRF attack detected.'); * }
* }
* </code>
* *
* @param string $intention The intention of the protected action * @param string $intention The intention of the protected action
* *

View File

@ -342,27 +342,31 @@ class PrototypedArrayNode extends ArrayNode
* one is same as this->keyAttribute and the other is 'value', then the prototype will be different. * one is same as this->keyAttribute and the other is 'value', then the prototype will be different.
* *
* For example, assume $this->keyAttribute is 'name' and the value array is as follows: * For example, assume $this->keyAttribute is 'name' and the value array is as follows:
* array( *
* array( * array(
* 'name' => 'name001', * array(
* 'value' => 'value001' * 'name' => 'name001',
* 'value' => 'value001'
* )
* ) * )
* )
* *
* Now, the key is 0 and the child node is: * Now, the key is 0 and the child node is:
* array( *
* 'name' => 'name001', * array(
* 'value' => 'value001' * 'name' => 'name001',
* ) * 'value' => 'value001'
* )
* *
* When normalizing the value array, the 'name' element will removed from the child node * When normalizing the value array, the 'name' element will removed from the child node
* and its value becomes the new key of the child node: * and its value becomes the new key of the child node:
* array( *
* 'name001' => array('value' => 'value001') * array(
* ) * 'name001' => array('value' => 'value001')
* )
* *
* Now only 'value' element is left in the child node which can be further simplified into a string: * Now only 'value' element is left in the child node which can be further simplified into a string:
* array('name001' => 'value001') *
* array('name001' => 'value001')
* *
* Now, the key becomes 'name001' and the child node becomes 'value001' and * Now, the key becomes 'name001' and the child node becomes 'value001' and
* the prototype of child node 'name001' should be a ScalarNode instead of an ArrayNode instance. * the prototype of child node 'name001' should be a ScalarNode instead of an ArrayNode instance.

View File

@ -224,15 +224,14 @@ class Table
* Renders table to output. * Renders table to output.
* *
* Example: * Example:
* <code> *
* +---------------+-----------------------+------------------+ * +---------------+-----------------------+------------------+
* | ISBN | Title | Author | * | ISBN | Title | Author |
* +---------------+-----------------------+------------------+ * +---------------+-----------------------+------------------+
* | 99921-58-10-7 | Divine Comedy | Dante Alighieri | * | 99921-58-10-7 | Divine Comedy | Dante Alighieri |
* | 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens | * | 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens |
* | 960-425-059-0 | The Lord of the Rings | J. R. R. Tolkien | * | 960-425-059-0 | The Lord of the Rings | J. R. R. Tolkien |
* +---------------+-----------------------+------------------+ * +---------------+-----------------------+------------------+
* </code>
*/ */
public function render() public function render()
{ {
@ -266,7 +265,9 @@ class Table
/** /**
* Renders horizontal header separator. * Renders horizontal header separator.
* *
* Example: <code>+-----+-----------+-------+</code> * Example:
*
* +-----+-----------+-------+
*/ */
private function renderRowSeparator() private function renderRowSeparator()
{ {
@ -297,7 +298,9 @@ class Table
/** /**
* Renders table row. * Renders table row.
* *
* Example: <code>| 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens |</code> * Example:
*
* | 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens |
* *
* @param array $row * @param array $row
* @param string $cellFormat * @param string $cellFormat

View File

@ -23,8 +23,8 @@ use Symfony\Component\Console\Output\BufferedOutput;
* Usage: * Usage:
* *
* $definition = new InputDefinition(array( * $definition = new InputDefinition(array(
* new InputArgument('name', InputArgument::REQUIRED), * new InputArgument('name', InputArgument::REQUIRED),
* new InputOption('foo', 'f', InputOption::VALUE_REQUIRED), * new InputOption('foo', 'f', InputOption::VALUE_REQUIRED),
* )); * ));
* *
* @author Fabien Potencier <fabien@symfony.com> * @author Fabien Potencier <fabien@symfony.com>

View File

@ -20,11 +20,11 @@ use Symfony\Component\Console\Formatter\OutputFormatterInterface;
* *
* Usage: * Usage:
* *
* $output = new StreamOutput(fopen('php://stdout', 'w')); * $output = new StreamOutput(fopen('php://stdout', 'w'));
* *
* As `StreamOutput` can use any stream, you can also use a file: * As `StreamOutput` can use any stream, you can also use a file:
* *
* $output = new StreamOutput(fopen('/path/to/output.log', 'a', false)); * $output = new StreamOutput(fopen('/path/to/output.log', 'a', false));
* *
* @author Fabien Potencier <fabien@symfony.com> * @author Fabien Potencier <fabien@symfony.com>
*/ */

View File

@ -17,7 +17,7 @@ namespace Symfony\Component\CssSelector;
* CssSelector is the main entry point of the component and can convert CSS * CssSelector is the main entry point of the component and can convert CSS
* selectors to XPath expressions. * selectors to XPath expressions.
* *
* $xpath = CssSelector::toXpath('h1.foo'); * $xpath = CssSelector::toXpath('h1.foo');
* *
* This component is a port of the Python cssselect library, * This component is a port of the Python cssselect library,
* which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.

View File

@ -33,11 +33,9 @@ use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
* A service can also be defined by creating a method named * A service can also be defined by creating a method named
* getXXXService(), where XXX is the camelized version of the id: * getXXXService(), where XXX is the camelized version of the id:
* *
* <ul> * * request -> getRequestService()
* <li>request -> getRequestService()</li> * * mysql_session_storage -> getMysqlSessionStorageService()
* <li>mysql_session_storage -> getMysqlSessionStorageService()</li> * * symfony.mysql_session_storage -> getSymfony_MysqlSessionStorageService()
* <li>symfony.mysql_session_storage -> getSymfony_MysqlSessionStorageService()</li>
* </ul>
* *
* The container can have three possible behaviors when a service does not exist: * The container can have three possible behaviors when a service does not exist:
* *

View File

@ -493,10 +493,10 @@ class ContainerBuilder extends Container implements TaggedContainerInterface
* the parameters passed to the container constructor to have precedence * the parameters passed to the container constructor to have precedence
* over the loaded ones. * over the loaded ones.
* *
* $container = new ContainerBuilder(new ParameterBag(array('foo' => 'bar'))); * $container = new ContainerBuilder(new ParameterBag(array('foo' => 'bar')));
* $loader = new LoaderXXX($container); * $loader = new LoaderXXX($container);
* $loader->load('resource_name'); * $loader->load('resource_name');
* $container->register('foo', 'stdClass'); * $container->register('foo', 'stdClass');
* *
* In the above example, even if the loaded resource defines a foo * In the above example, even if the loaded resource defines a foo
* parameter, the value will still be 'bar' as defined in the ContainerBuilder * parameter, the value will still be 'bar' as defined in the ContainerBuilder
@ -999,14 +999,14 @@ class ContainerBuilder extends Container implements TaggedContainerInterface
* *
* Example: * Example:
* *
* $container->register('foo')->addTag('my.tag', array('hello' => 'world')); * $container->register('foo')->addTag('my.tag', array('hello' => 'world'));
* *
* $serviceIds = $container->findTaggedServiceIds('my.tag'); * $serviceIds = $container->findTaggedServiceIds('my.tag');
* foreach ($serviceIds as $serviceId => $tags) { * foreach ($serviceIds as $serviceId => $tags) {
* foreach ($tags as $tag) { * foreach ($tags as $tag) {
* echo $tag['hello']; * echo $tag['hello'];
* }
* } * }
* }
* *
* @param string $name The tag name * @param string $name The tag name
* *

View File

@ -579,7 +579,7 @@ class Crawler extends \SplObjectStorage
* *
* Example: * Example:
* *
* $crawler->filter('h1 a')->extract(array('_text', 'href')); * $crawler->filter('h1 a')->extract(array('_text', 'href'));
* *
* @param array $attributes An array of attributes * @param array $attributes An array of attributes
* *
@ -787,7 +787,7 @@ class Crawler extends \SplObjectStorage
* Escaped characters are: quotes (") and apostrophe ('). * Escaped characters are: quotes (") and apostrophe (').
* *
* Examples: * Examples:
* <code> *
* echo Crawler::xpathLiteral('foo " bar'); * echo Crawler::xpathLiteral('foo " bar');
* //prints 'foo " bar' * //prints 'foo " bar'
* *
@ -796,7 +796,7 @@ class Crawler extends \SplObjectStorage
* *
* echo Crawler::xpathLiteral('a\'b"c'); * echo Crawler::xpathLiteral('a\'b"c');
* //prints concat('a', "'", 'b"c') * //prints concat('a', "'", 'b"c')
* </code> *
* *
* @param string $s String to be escaped * @param string $s String to be escaped
* *

View File

@ -186,9 +186,7 @@ class FormFieldRegistry
/** /**
* Splits a field name into segments as a web browser would do. * Splits a field name into segments as a web browser would do.
* *
* <code>
* getSegments('base[foo][3][]') = array('base', 'foo, '3', ''); * getSegments('base[foo][3][]') = array('base', 'foo, '3', '');
* </code>
* *
* @param string $name The name of the field * @param string $name The name of the field
* *

View File

@ -36,7 +36,7 @@ use Symfony\Component\Finder\Iterator\SortableIterator;
* *
* All methods return the current Finder object to allow easy chaining: * All methods return the current Finder object to allow easy chaining:
* *
* $finder = Finder::create()->files()->name('*.php')->in(__DIR__); * $finder = Finder::create()->files()->name('*.php')->in(__DIR__);
* *
* @author Fabien Potencier <fabien@symfony.com> * @author Fabien Potencier <fabien@symfony.com>
*/ */
@ -215,8 +215,8 @@ class Finder implements \IteratorAggregate, \Countable
* *
* Usage: * Usage:
* *
* $finder->depth('> 1') // the Finder will start matching at level 1. * $finder->depth('> 1') // the Finder will start matching at level 1.
* $finder->depth('< 3') // the Finder will descend at most 3 levels of directories below the starting point. * $finder->depth('< 3') // the Finder will descend at most 3 levels of directories below the starting point.
* *
* @param string|int $level The depth level expression * @param string|int $level The depth level expression
* *
@ -237,10 +237,10 @@ class Finder implements \IteratorAggregate, \Countable
* *
* The date must be something that strtotime() is able to parse: * The date must be something that strtotime() is able to parse:
* *
* $finder->date('since yesterday'); * $finder->date('since yesterday');
* $finder->date('until 2 days ago'); * $finder->date('until 2 days ago');
* $finder->date('> now - 2 hours'); * $finder->date('> now - 2 hours');
* $finder->date('>= 2005-10-15'); * $finder->date('>= 2005-10-15');
* *
* @param string $date A date range string * @param string $date A date range string
* *
@ -262,9 +262,9 @@ class Finder implements \IteratorAggregate, \Countable
* *
* You can use patterns (delimited with / sign), globs or simple strings. * You can use patterns (delimited with / sign), globs or simple strings.
* *
* $finder->name('*.php') * $finder->name('*.php')
* $finder->name('/\.php$/') // same as above * $finder->name('/\.php$/') // same as above
* $finder->name('test.php') * $finder->name('test.php')
* *
* @param string $pattern A pattern (a regexp, a glob, or a string) * @param string $pattern A pattern (a regexp, a glob, or a string)
* *
@ -300,8 +300,8 @@ class Finder implements \IteratorAggregate, \Countable
* *
* Strings or PCRE patterns can be used: * Strings or PCRE patterns can be used:
* *
* $finder->contains('Lorem ipsum') * $finder->contains('Lorem ipsum')
* $finder->contains('/Lorem ipsum/i') * $finder->contains('/Lorem ipsum/i')
* *
* @param string $pattern A pattern (string or regexp) * @param string $pattern A pattern (string or regexp)
* *
@ -321,8 +321,8 @@ class Finder implements \IteratorAggregate, \Countable
* *
* Strings or PCRE patterns can be used: * Strings or PCRE patterns can be used:
* *
* $finder->notContains('Lorem ipsum') * $finder->notContains('Lorem ipsum')
* $finder->notContains('/Lorem ipsum/i') * $finder->notContains('/Lorem ipsum/i')
* *
* @param string $pattern A pattern (string or regexp) * @param string $pattern A pattern (string or regexp)
* *
@ -342,8 +342,8 @@ class Finder implements \IteratorAggregate, \Countable
* *
* You can use patterns (delimited with / sign) or simple strings. * You can use patterns (delimited with / sign) or simple strings.
* *
* $finder->path('some/special/dir') * $finder->path('some/special/dir')
* $finder->path('/some\/special\/dir/') // same as above * $finder->path('/some\/special\/dir/') // same as above
* *
* Use only / as dirname separator. * Use only / as dirname separator.
* *
@ -365,8 +365,8 @@ class Finder implements \IteratorAggregate, \Countable
* *
* You can use patterns (delimited with / sign) or simple strings. * You can use patterns (delimited with / sign) or simple strings.
* *
* $finder->notPath('some/special/dir') * $finder->notPath('some/special/dir')
* $finder->notPath('/some\/special\/dir/') // same as above * $finder->notPath('/some\/special\/dir/') // same as above
* *
* Use only / as dirname separator. * Use only / as dirname separator.
* *
@ -386,9 +386,9 @@ class Finder implements \IteratorAggregate, \Countable
/** /**
* Adds tests for file sizes. * Adds tests for file sizes.
* *
* $finder->size('> 10K'); * $finder->size('> 10K');
* $finder->size('<= 1Ki'); * $finder->size('<= 1Ki');
* $finder->size(4); * $finder->size(4);
* *
* @param string|int $size A size range string or an integer * @param string|int $size A size range string or an integer
* *

View File

@ -14,14 +14,14 @@ namespace Symfony\Component\Finder;
/** /**
* Glob matches globbing patterns against text. * Glob matches globbing patterns against text.
* *
* if match_glob("foo.*", "foo.bar") echo "matched\n"; * if match_glob("foo.*", "foo.bar") echo "matched\n";
* *
* // prints foo.bar and foo.baz * // prints foo.bar and foo.baz
* $regex = glob_to_regex("foo.*"); * $regex = glob_to_regex("foo.*");
* for (array('foo.bar', 'foo.baz', 'foo', 'bar') as $t) * for (array('foo.bar', 'foo.baz', 'foo', 'bar') as $t)
* { * {
* if (/$regex/) echo "matched: $car\n"; * if (/$regex/) echo "matched: $car\n";
* } * }
* *
* Glob implements glob(3) style matching that can be used to match * Glob implements glob(3) style matching that can be used to match
* against text, rather than fetching names from a filesystem. * against text, rather than fetching names from a filesystem.

View File

@ -29,16 +29,14 @@ use Symfony\Component\Form\Exception\InvalidArgumentException;
* *
* Example: * Example:
* *
* ```php * $choices = array('' => 'Don\'t know', 0 => 'No', 1 => 'Yes');
* $choices = array('' => 'Don\'t know', 0 => 'No', 1 => 'Yes'); * $choiceList = new ArrayKeyChoiceList(array_keys($choices));
* $choiceList = new ArrayKeyChoiceList(array_keys($choices));
* *
* $values = $choiceList->getValues() * $values = $choiceList->getValues()
* // => array('', '0', '1') * // => array('', '0', '1')
* *
* $selectedValues = $choiceList->getValuesForChoices(array(true)); * $selectedValues = $choiceList->getValuesForChoices(array(true));
* // => array('1') * // => array('1')
* ```
* *
* @author Bernhard Schussek <bschussek@gmail.com> * @author Bernhard Schussek <bschussek@gmail.com>
* *

View File

@ -24,18 +24,14 @@ use Symfony\Component\PropertyAccess\PropertyPath;
* *
* Pass the decorated factory to the constructor: * Pass the decorated factory to the constructor:
* *
* ```php * $decorator = new PropertyAccessDecorator($factory);
* $decorator = new PropertyAccessDecorator($factory);
* ```
* *
* You can now pass property paths for generating choice values, labels, view * You can now pass property paths for generating choice values, labels, view
* indices, HTML attributes and for determining the preferred choices and the * indices, HTML attributes and for determining the preferred choices and the
* choice groups: * choice groups:
* *
* ```php * // extract values from the $value property
* // extract values from the $value property * $list = $createListFromChoices($objects, 'value');
* $list = $createListFromChoices($objects, 'value');
* ```
* *
* @author Bernhard Schussek <bschussek@gmail.com> * @author Bernhard Schussek <bschussek@gmail.com>
*/ */

View File

@ -28,11 +28,9 @@ use Symfony\Component\Form\FormConfigBuilder;
* can be stored in the array key pointing to the nested array. The topmost * can be stored in the array key pointing to the nested array. The topmost
* level of the hierarchy may also be a \Traversable. * level of the hierarchy may also be a \Traversable.
* *
* <code> * $choices = array(true, false);
* $choices = array(true, false); * $labels = array('Agree', 'Disagree');
* $labels = array('Agree', 'Disagree'); * $choiceList = new ArrayChoiceList($choices, $labels);
* $choiceList = new ArrayChoiceList($choices, $labels);
* </code>
* *
* @author Bernhard Schussek <bschussek@gmail.com> * @author Bernhard Schussek <bschussek@gmail.com>
* *

View File

@ -26,12 +26,10 @@ use Symfony\Component\PropertyAccess\PropertyPath;
* Supports generation of choice labels, choice groups and choice values * Supports generation of choice labels, choice groups and choice values
* by calling getters of the object (or associated objects). * by calling getters of the object (or associated objects).
* *
* <code> * $choices = array($user1, $user2);
* $choices = array($user1, $user2);
* *
* // call getName() to determine the choice labels * // call getName() to determine the choice labels
* $choiceList = new ObjectChoiceList($choices, 'name'); * $choiceList = new ObjectChoiceList($choices, 'name');
* </code>
* *
* @author Bernhard Schussek <bschussek@gmail.com> * @author Bernhard Schussek <bschussek@gmail.com>
* *

View File

@ -22,12 +22,10 @@ namespace Symfony\Component\Form\Extension\Core\ChoiceList;
* creating nested arrays. The title of the sub-hierarchy can be stored in the * creating nested arrays. The title of the sub-hierarchy can be stored in the
* array key pointing to the nested array. * array key pointing to the nested array.
* *
* <code> * $choiceList = new SimpleChoiceList(array(
* $choiceList = new SimpleChoiceList(array( * 'creditcard' => 'Credit card payment',
* 'creditcard' => 'Credit card payment', * 'cash' => 'Cash payment',
* 'cash' => 'Cash payment', * ));
* ));
* </code>
* *
* @author Bernhard Schussek <bschussek@gmail.com> * @author Bernhard Schussek <bschussek@gmail.com>
* *

View File

@ -198,9 +198,7 @@ class ViolationPath implements \IteratorAggregate, PropertyPathInterface
* *
* Consider the following violation path: * Consider the following violation path:
* *
* <code> * children[address].children[office].data.street
* children[address].children[office].data.street
* </code>
* *
* In this example, "address" and "office" map to forms, while * In this example, "address" and "office" map to forms, while
* "street does not. * "street does not.

View File

@ -53,11 +53,9 @@ interface FormRendererEngineInterface
* and continues with the child of that root, the child of that child etc. * and continues with the child of that root, the child of that child etc.
* The following is an example for a block hierarchy: * The following is an example for a block hierarchy:
* *
* <code> * form_widget
* form_widget * text_widget
* text_widget * url_widget
* url_widget
* </code>
* *
* In this example, "url_widget" is the most specific block, while the other * In this example, "url_widget" is the most specific block, while the other
* blocks are its ancestors in the hierarchy. * blocks are its ancestors in the hierarchy.
@ -91,11 +89,9 @@ interface FormRendererEngineInterface
* and continues with the child of that root, the child of that child etc. * and continues with the child of that root, the child of that child etc.
* The following is an example for a block hierarchy: * The following is an example for a block hierarchy:
* *
* <code> * form_widget
* form_widget * text_widget
* text_widget * url_widget
* url_widget
* </code>
* *
* The second parameter $hierarchyLevel determines the level of the hierarchy * The second parameter $hierarchyLevel determines the level of the hierarchy
* that should be rendered. * that should be rendered.

View File

@ -69,18 +69,14 @@ interface FormRendererInterface
* Use this helper for CSRF protection without the overhead of creating a * Use this helper for CSRF protection without the overhead of creating a
* form. * form.
* *
* <code> * <input type="hidden" name="token" value="<?php $renderer->renderCsrfToken('rm_user_'.$user->getId()) ?>">
* <input type="hidden" name="token" value="<?php $renderer->renderCsrfToken('rm_user_'.$user->getId()) ?>">
* </code>
* *
* Check the token in your action using the same token ID. * Check the token in your action using the same token ID.
* *
* <code> * $csrfProvider = $this->get('security.csrf.token_generator');
* $csrfProvider = $this->get('security.csrf.token_generator'); * if (!$csrfProvider->isCsrfTokenValid('rm_user_'.$user->getId(), $token)) {
* if (!$csrfProvider->isCsrfTokenValid('rm_user_'.$user->getId(), $token)) { * throw new \RuntimeException('CSRF attack detected.');
* throw new \RuntimeException('CSRF attack detected.'); * }
* }
* </code>
* *
* @param string $tokenId The ID of the CSRF token * @param string $tokenId The ID of the CSRF token
* *

View File

@ -18,29 +18,25 @@ use Symfony\Component\Form\Extension\Core\CoreExtension;
* *
* Use this class to conveniently create new form factories: * Use this class to conveniently create new form factories:
* *
* <code> * use Symfony\Component\Form\Forms;
* use Symfony\Component\Form\Forms;
* *
* $formFactory = Forms::createFormFactory(); * $formFactory = Forms::createFormFactory();
* *
* $form = $formFactory->createBuilder() * $form = $formFactory->createBuilder()
* ->add('firstName', 'Symfony\Component\Form\Extension\Core\Type\TextType') * ->add('firstName', 'Symfony\Component\Form\Extension\Core\Type\TextType')
* ->add('lastName', 'Symfony\Component\Form\Extension\Core\Type\TextType') * ->add('lastName', 'Symfony\Component\Form\Extension\Core\Type\TextType')
* ->add('age', 'Symfony\Component\Form\Extension\Core\Type\IntegerType') * ->add('age', 'Symfony\Component\Form\Extension\Core\Type\IntegerType')
* ->add('gender', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', array( * ->add('gender', 'Symfony\Component\Form\Extension\Core\Type\ChoiceType', array(
* 'choices' => array('Male' => 'm', 'Female' => 'f'), * 'choices' => array('Male' => 'm', 'Female' => 'f'),
* 'choices_as_values' => true, * 'choices_as_values' => true,
* )) * ))
* ->getForm(); * ->getForm();
* </code>
* *
* You can also add custom extensions to the form factory: * You can also add custom extensions to the form factory:
* *
* <code> * $formFactory = Forms::createFormFactoryBuilder()
* $formFactory = Forms::createFormFactoryBuilder() * ->addExtension(new AcmeExtension())
* ->addExtension(new AcmeExtension()) * ->getFormFactory();
* ->getFormFactory();
* </code>
* *
* If you create custom form types or type extensions, it is * If you create custom form types or type extensions, it is
* generally recommended to create your own extensions that lazily * generally recommended to create your own extensions that lazily
@ -48,54 +44,46 @@ use Symfony\Component\Form\Extension\Core\CoreExtension;
* does not matter that much, you can also pass them directly to the * does not matter that much, you can also pass them directly to the
* form factory: * form factory:
* *
* <code> * $formFactory = Forms::createFormFactoryBuilder()
* $formFactory = Forms::createFormFactoryBuilder() * ->addType(new PersonType())
* ->addType(new PersonType()) * ->addType(new PhoneNumberType())
* ->addType(new PhoneNumberType()) * ->addTypeExtension(new FormTypeHelpTextExtension())
* ->addTypeExtension(new FormTypeHelpTextExtension()) * ->getFormFactory();
* ->getFormFactory();
* </code>
* *
* Support for the Validator component is provided by ValidatorExtension. * Support for the Validator component is provided by ValidatorExtension.
* This extension needs a validator object to function properly: * This extension needs a validator object to function properly:
* *
* <code> * use Symfony\Component\Validator\Validation;
* use Symfony\Component\Validator\Validation; * use Symfony\Component\Form\Extension\Validator\ValidatorExtension;
* use Symfony\Component\Form\Extension\Validator\ValidatorExtension;
* *
* $validator = Validation::createValidator(); * $validator = Validation::createValidator();
* $formFactory = Forms::createFormFactoryBuilder() * $formFactory = Forms::createFormFactoryBuilder()
* ->addExtension(new ValidatorExtension($validator)) * ->addExtension(new ValidatorExtension($validator))
* ->getFormFactory(); * ->getFormFactory();
* </code>
* *
* Support for the Templating component is provided by TemplatingExtension. * Support for the Templating component is provided by TemplatingExtension.
* This extension needs a PhpEngine object for rendering forms. As second * This extension needs a PhpEngine object for rendering forms. As second
* argument you should pass the names of the default themes. Here is an * argument you should pass the names of the default themes. Here is an
* example for using the default layout with "<div>" tags: * example for using the default layout with "<div>" tags:
* *
* <code> * use Symfony\Component\Form\Extension\Templating\TemplatingExtension;
* use Symfony\Component\Form\Extension\Templating\TemplatingExtension;
* *
* $formFactory = Forms::createFormFactoryBuilder() * $formFactory = Forms::createFormFactoryBuilder()
* ->addExtension(new TemplatingExtension($engine, null, array( * ->addExtension(new TemplatingExtension($engine, null, array(
* 'FrameworkBundle:Form', * 'FrameworkBundle:Form',
* ))) * )))
* ->getFormFactory(); * ->getFormFactory();
* </code>
* *
* The next example shows how to include the "<table>" layout: * The next example shows how to include the "<table>" layout:
* *
* <code> * use Symfony\Component\Form\Extension\Templating\TemplatingExtension;
* use Symfony\Component\Form\Extension\Templating\TemplatingExtension;
* *
* $formFactory = Forms::createFormFactoryBuilder() * $formFactory = Forms::createFormFactoryBuilder()
* ->addExtension(new TemplatingExtension($engine, null, array( * ->addExtension(new TemplatingExtension($engine, null, array(
* 'FrameworkBundle:Form', * 'FrameworkBundle:Form',
* 'FrameworkBundle:FormTable', * 'FrameworkBundle:FormTable',
* ))) * )))
* ->getFormFactory(); * ->getFormFactory();
* </code>
* *
* @author Bernhard Schussek <bschussek@gmail.com> * @author Bernhard Schussek <bschussek@gmail.com>
*/ */

View File

@ -360,11 +360,9 @@ class OptionsResolver implements Options, OptionsResolverInterface
* *
* The normalizer should be a closure with the following signature: * The normalizer should be a closure with the following signature:
* *
* ```php * function (Options $options, $value) {
* function (Options $options, $value) { * // ...
* // ... * }
* }
* ```
* *
* The closure is invoked when {@link resolve()} is called. The closure * The closure is invoked when {@link resolve()} is called. The closure
* has access to the resolved values of other options through the passed * has access to the resolved values of other options through the passed

View File

@ -29,10 +29,8 @@ interface OptionsResolverInterface
* evaluate the option value lazily. These closures must have one * evaluate the option value lazily. These closures must have one
* of the following signatures: * of the following signatures:
* *
* <code> * function (Options $options)
* function (Options $options) * function (Options $options, $value)
* function (Options $options, $value)
* </code>
* *
* The second parameter passed to the closure is the previously * The second parameter passed to the closure is the previously
* set default value, in case you are overwriting an existing * set default value, in case you are overwriting an existing
@ -154,9 +152,7 @@ interface OptionsResolverInterface
* *
* The normalizers should be closures with the following signature: * The normalizers should be closures with the following signature:
* *
* <code> * function (Options $options, $value)
* function (Options $options, $value)
* </code>
* *
* The second parameter passed to the closure is the value of * The second parameter passed to the closure is the value of
* the option. * the option.

View File

@ -16,9 +16,9 @@ use Symfony\Component\Process\Exception\RuntimeException;
/** /**
* PhpProcess runs a PHP script in an independent process. * PhpProcess runs a PHP script in an independent process.
* *
* $p = new PhpProcess('<?php echo "foo"; ?>'); * $p = new PhpProcess('<?php echo "foo"; ?>');
* $p->run(); * $p->run();
* print $p->getOutput()."\n"; * print $p->getOutput()."\n";
* *
* @author Fabien Potencier <fabien@symfony.com> * @author Fabien Potencier <fabien@symfony.com>
*/ */

View File

@ -46,7 +46,7 @@ class RouteCollectionBuilder
/** /**
* Import an external routing resource and returns the RouteCollectionBuilder. * Import an external routing resource and returns the RouteCollectionBuilder.
* *
* $routes->import('blog.yml', '/blog'); * $routes->import('blog.yml', '/blog');
* *
* @param mixed $resource * @param mixed $resource
* @param string|null $prefix * @param string|null $prefix

View File

@ -36,12 +36,10 @@ interface UserInterface
/** /**
* Returns the roles granted to the user. * Returns the roles granted to the user.
* *
* <code> * public function getRoles()
* public function getRoles() * {
* { * return array('ROLE_USER');
* return array('ROLE_USER'); * }
* }
* </code>
* *
* Alternatively, the roles might be stored on a ``roles`` property, * Alternatively, the roles might be stored on a ``roles`` property,
* and populated in any number of different ways when the user object * and populated in any number of different ways when the user object

View File

@ -40,18 +40,18 @@ interface GuardAuthenticatorInterface extends AuthenticationEntryPointInterface
* *
* For example, for a form login, you might: * For example, for a form login, you might:
* *
* if ($request->request->has('_username')) { * if ($request->request->has('_username')) {
* return array( * return array(
* 'username' => $request->request->get('_username'), * 'username' => $request->request->get('_username'),
* 'password' => $request->request->get('_password'), * 'password' => $request->request->get('_password'),
* ); * );
* } else { * } else {
* return; * return;
* } * }
* *
* Or for an API token that's on a header, you might use: * Or for an API token that's on a header, you might use:
* *
* return array('api_key' => $request->headers->get('X-API-TOKEN')); * return array('api_key' => $request->headers->get('X-API-TOKEN'));
* *
* @param Request $request * @param Request $request
* *

View File

@ -31,10 +31,14 @@ interface AuthenticationEntryPointInterface
* response that "helps" the user start into the authentication process. * response that "helps" the user start into the authentication process.
* *
* Examples: * Examples:
* A) For a form login, you might redirect to the login page *
* return new RedirectResponse('/login'); * - For a form login, you might redirect to the login page
* B) For an API token authentication system, you return a 401 response *
* return new Response('Auth header required', 401); * return new RedirectResponse('/login');
*
* - For an API token authentication system, you return a 401 response
*
* return new Response('Auth header required', 401);
* *
* @param Request $request The request that resulted in an AuthenticationException * @param Request $request The request that resulted in an AuthenticationException
* @param AuthenticationException $authException The exception that started the authentication process * @param AuthenticationException $authException The exception that started the authentication process

View File

@ -26,9 +26,9 @@ use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
* objects are turned into arrays by normalizers. * objects are turned into arrays by normalizers.
* arrays are turned into various output formats by encoders. * arrays are turned into various output formats by encoders.
* *
* $serializer->serialize($obj, 'xml') * $serializer->serialize($obj, 'xml')
* $serializer->decode($data, 'xml') * $serializer->decode($data, 'xml')
* $serializer->denormalize($data, 'Class', 'xml') * $serializer->denormalize($data, 'Class', 'xml')
* *
* @author Jordi Boggiano <j.boggiano@seld.be> * @author Jordi Boggiano <j.boggiano@seld.be>
* @author Johannes M. Schmitt <schmittjoh@gmail.com> * @author Johannes M. Schmitt <schmittjoh@gmail.com>

View File

@ -21,9 +21,7 @@ use Symfony\Component\Templating\Asset\UrlPackage;
* *
* Usage: * Usage:
* *
* <code> * <img src="<?php echo $view['assets']->getUrl('foo.png') ?>" />
* <img src="<?php echo $view['assets']->getUrl('foo.png') ?>" />
* </code>
* *
* @author Fabien Potencier <fabien@symfony.com> * @author Fabien Potencier <fabien@symfony.com>
* @author Kris Wallsmith <kris@symfony.com> * @author Kris Wallsmith <kris@symfony.com>

View File

@ -20,9 +20,7 @@ use Symfony\Component\Templating\Asset\PackageInterface;
* *
* Usage: * Usage:
* *
* <code> * <img src="<?php echo $view['assets']->getUrl('foo.png') ?>" />
* <img src="<?php echo $view['assets']->getUrl('foo.png') ?>" />
* </code>
* *
* @author Fabien Potencier <fabien@symfony.com> * @author Fabien Potencier <fabien@symfony.com>
* @author Kris Wallsmith <kris@symfony.com> * @author Kris Wallsmith <kris@symfony.com>

View File

@ -37,21 +37,20 @@ abstract class AbstractOperation implements OperationInterface
* This array stores 'all', 'new' and 'obsolete' messages for all valid domains. * This array stores 'all', 'new' and 'obsolete' messages for all valid domains.
* *
* The data structure of this array is as follows: * The data structure of this array is as follows:
* ```php *
* array( * array(
* 'domain 1' => array( * 'domain 1' => array(
* 'all' => array(...), * 'all' => array(...),
* 'new' => array(...), * 'new' => array(...),
* 'obsolete' => array(...) * 'obsolete' => array(...)
* ), * ),
* 'domain 2' => array( * 'domain 2' => array(
* 'all' => array(...), * 'all' => array(...),
* 'new' => array(...), * 'new' => array(...),
* 'obsolete' => array(...) * 'obsolete' => array(...)
* ), * ),
* ... * ...
* ) * )
* ```
* *
* @var array The array that stores 'all', 'new' and 'obsolete' messages * @var array The array that stores 'all', 'new' and 'obsolete' messages
*/ */

View File

@ -19,11 +19,9 @@ namespace Symfony\Component\Validator;
* element in the validation graph and the root element that was originally * element in the validation graph and the root element that was originally
* passed to the validator. For example, take the following graph: * passed to the validator. For example, take the following graph:
* *
* <pre> * (Person)---(firstName: string)
* (Person)---(firstName: string) * \
* \ * (address: Address)---(street: string)
* (address: Address)---(street: string)
* </pre>
* *
* If the <tt>Person</tt> object is validated and validation fails for the * If the <tt>Person</tt> object is validated and validation fails for the
* "firstName" property, the generated violation has the <tt>Person</tt> * "firstName" property, the generated violation has the <tt>Person</tt>

View File

@ -16,21 +16,17 @@ namespace Symfony\Component\Validator;
* *
* For example, let's validate the following object graph: * For example, let's validate the following object graph:
* *
* <pre> * (Person)---($firstName: string)
* (Person)---($firstName: string) * \
* \ * ($address: Address)---($street: string)
* ($address: Address)---($street: string)
* </pre>
* *
* We validate the <tt>Person</tt> instance, which becomes the "root" of the * We validate the <tt>Person</tt> instance, which becomes the "root" of the
* validation run (see {@link getRoot}). The state of the context after the * validation run (see {@link getRoot}). The state of the context after the
* first step will be like this: * first step will be like this:
* *
* <pre> * (Person)---($firstName: string)
* (Person)---($firstName: string) * ^ \
* ^ \ * ($address: Address)---($street: string)
* ($address: Address)---($street: string)
* </pre>
* *
* The validator is stopped at the <tt>Person</tt> node, both the root and the * The validator is stopped at the <tt>Person</tt> node, both the root and the
* value (see {@link getValue}) of the context point to the <tt>Person</tt> * value (see {@link getValue}) of the context point to the <tt>Person</tt>
@ -41,11 +37,9 @@ namespace Symfony\Component\Validator;
* After advancing to the property <tt>$firstName</tt> of the <tt>Person</tt> * After advancing to the property <tt>$firstName</tt> of the <tt>Person</tt>
* instance, the state of the context looks like this: * instance, the state of the context looks like this:
* *
* <pre> * (Person)---($firstName: string)
* (Person)---($firstName: string) * \ ^
* \ ^ * ($address: Address)---($street: string)
* ($address: Address)---($street: string)
* </pre>
* *
* The validator is stopped at the property <tt>$firstName</tt>. The root still * The validator is stopped at the property <tt>$firstName</tt>. The root still
* points to the <tt>Person</tt> instance, because this is where the validation * points to the <tt>Person</tt> instance, because this is where the validation
@ -56,12 +50,10 @@ namespace Symfony\Component\Validator;
* <tt>$street</tt> property of the <tt>Address</tt> instance, the context state * <tt>$street</tt> property of the <tt>Address</tt> instance, the context state
* looks like this: * looks like this:
* *
* <pre> * (Person)---($firstName: string)
* (Person)---($firstName: string) * \
* \ * ($address: Address)---($street: string)
* ($address: Address)---($street: string) * ^
* ^
* </pre>
* *
* The validator is stopped at the property <tt>$street</tt>. The root still * The validator is stopped at the property <tt>$street</tt>. The root still
* points to the <tt>Person</tt> instance, but the property path is now * points to the <tt>Person</tt> instance, but the property path is now
@ -128,19 +120,14 @@ interface ExecutionContextInterface
* argument which is appended to the current property path when a violation * argument which is appended to the current property path when a violation
* is created. For example, take the following object graph: * is created. For example, take the following object graph:
* *
* <pre> * (Person)---($address: Address)---($phoneNumber: PhoneNumber)
* (Person)---($address: Address)---($phoneNumber: PhoneNumber)
* ^
* </pre>
* *
* When the execution context stops at the <tt>Person</tt> instance, the * When the execution context stops at the <tt>Person</tt> instance, the
* property path is "address". When you validate the <tt>PhoneNumber</tt> * property path is "address". When you validate the <tt>PhoneNumber</tt>
* instance now, pass "phoneNumber" as sub path to correct the property path * instance now, pass "phoneNumber" as sub path to correct the property path
* to "address.phoneNumber": * to "address.phoneNumber":
* *
* <pre> * $context->validate($address->phoneNumber, 'phoneNumber');
* $context->validate($address->phoneNumber, 'phoneNumber');
* </pre>
* *
* Any violations generated during the validation will be added to the * Any violations generated during the validation will be added to the
* violation list that you can access with {@link getViolations}. * violation list that you can access with {@link getViolations}.
@ -167,19 +154,14 @@ interface ExecutionContextInterface
* Use the parameter <tt>$subPath</tt> to adapt the property path for the * Use the parameter <tt>$subPath</tt> to adapt the property path for the
* validated value. For example, take the following object graph: * validated value. For example, take the following object graph:
* *
* <pre> * (Person)---($address: Address)---($street: string)
* (Person)---($address: Address)---($street: string)
* ^
* </pre>
* *
* When the validator validates the <tt>Address</tt> instance, the * When the validator validates the <tt>Address</tt> instance, the
* property path stored in the execution context is "address". When you * property path stored in the execution context is "address". When you
* manually validate the property <tt>$street</tt> now, pass the sub path * manually validate the property <tt>$street</tt> now, pass the sub path
* "street" to adapt the full property path to "address.street": * "street" to adapt the full property path to "address.street":
* *
* <pre> * $context->validate($address->street, new NotNull(), 'street');
* $context->validate($address->street, new NotNull(), 'street');
* </pre>
* *
* @param mixed $value The value to validate * @param mixed $value The value to validate
* @param Constraint|Constraint[] $constraints The constraint(s) to validate against * @param Constraint|Constraint[] $constraints The constraint(s) to validate against
@ -290,9 +272,7 @@ interface ExecutionContextInterface
* *
* For example, take the following object graph: * For example, take the following object graph:
* *
* <pre> * (Person)---($address: Address)---($street: string)
* (Person)---($address: Address)---($street: string)
* </pre>
* *
* When the <tt>Person</tt> instance is passed to the validator, the * When the <tt>Person</tt> instance is passed to the validator, the
* property path is initially empty. When the <tt>$address</tt> property * property path is initially empty. When the <tt>$address</tt> property

View File

@ -23,11 +23,10 @@ class Yaml
/** /**
* Parses YAML into a PHP value. * Parses YAML into a PHP value.
* *
* Usage: * Usage:
* <code> *
* $array = Yaml::parse(file_get_contents('config.yml')); * $array = Yaml::parse(file_get_contents('config.yml'));
* print_r($array); * print_r($array);
* </code>
* *
* As this method accepts both plain strings and file names as an input, * As this method accepts both plain strings and file names as an input,
* you must validate the input before calling this method. Passing a file * you must validate the input before calling this method. Passing a file