minor #17997 Updated all the README files (javiereguiluz)
This PR was squashed before being merged into the 2.3 branch (closes #17997).
Discussion
----------
Updated all the README files
| Q | A
| ------------- | ---
| Branch | 2.3
| Bug fix? | no
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | -
| License | MIT
| Doc PR | -
Related to #17995.
Commits
-------
2e81248
Updated all the README files
This commit is contained in:
commit
8713c7efaf
@ -7,8 +7,7 @@ various Symfony components.
|
|||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
$ cd path/to/Symfony/Bridge/Doctrine/
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
$ composer install
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
$ phpunit
|
|
||||||
|
@ -6,8 +6,7 @@ Provides integration for Monolog with various Symfony components.
|
|||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
$ cd path/to/Symfony/Bridge/Monolog/
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
$ composer install
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
$ phpunit
|
|
||||||
|
@ -6,8 +6,7 @@ Provides integration for Propel with various Symfony components.
|
|||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
$ cd path/to/Symfony/Bridge/Propel1/
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
$ composer install
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
$ phpunit
|
|
||||||
|
@ -6,10 +6,9 @@ Provides integration for [ProxyManager][1] with various Symfony components.
|
|||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
$ cd path/to/Symfony/Bridge/ProxyManager/
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
$ composer install
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
$ phpunit
|
|
||||||
|
|
||||||
[1]: https://github.com/Ocramius/ProxyManager
|
[1]: https://github.com/Ocramius/ProxyManager
|
||||||
|
@ -7,9 +7,7 @@ Symfony components.
|
|||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
If you want to run the unit tests, install dev dependencies before
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
running PHPUnit:
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
$ cd path/to/Symfony/Bridge/Twig/
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
$ composer install
|
|
||||||
$ phpunit
|
|
||||||
|
@ -1,23 +1,14 @@
|
|||||||
BrowserKit Component
|
BrowserKit Component
|
||||||
====================
|
====================
|
||||||
|
|
||||||
BrowserKit simulates the behavior of a web browser.
|
The BrowserKit component simulates the behavior of a web browser, allowing you
|
||||||
|
to make requests, click on links and submit forms programmatically.
|
||||||
The component only provides an abstract client and does not provide any
|
|
||||||
"default" backend for the HTTP layer.
|
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
For a simple implementation of a browser based on an HTTP layer, have a look
|
* [Documentation](https://symfony.com/doc/current/components/browser_kit/introduction.html)
|
||||||
at [Goutte](https://github.com/FriendsOfPHP/Goutte).
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
For an implementation based on HttpKernelInterface, have a look at the
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
[Client](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpKernel/Client.php)
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
provided by the HttpKernel component.
|
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
|
||||||
|
|
||||||
$ cd path/to/Symfony/Component/BrowserKit/
|
|
||||||
$ composer install
|
|
||||||
$ phpunit
|
|
||||||
|
@ -1,85 +1,14 @@
|
|||||||
ClassLoader Component
|
ClassLoader Component
|
||||||
=====================
|
=====================
|
||||||
|
|
||||||
ClassLoader loads your project classes automatically if they follow some
|
The ClassLoader component provides tools to autoload your classes and cache
|
||||||
standard PHP conventions.
|
their locations for performance.
|
||||||
|
|
||||||
The ClassLoader object is able to autoload classes that implement the PSR-0
|
|
||||||
standard or the PEAR naming convention.
|
|
||||||
|
|
||||||
First, register the autoloader:
|
|
||||||
|
|
||||||
```php
|
|
||||||
require_once __DIR__.'/src/Symfony/Component/ClassLoader/ClassLoader.php';
|
|
||||||
|
|
||||||
use Symfony\Component\ClassLoader\ClassLoader;
|
|
||||||
|
|
||||||
$loader = new ClassLoader();
|
|
||||||
$loader->register();
|
|
||||||
```
|
|
||||||
|
|
||||||
Then, register some namespaces with the `addPrefix()` method:
|
|
||||||
|
|
||||||
```php
|
|
||||||
$loader->addPrefix('Symfony', __DIR__.'/src');
|
|
||||||
$loader->addPrefix('Monolog', __DIR__.'/vendor/monolog/src');
|
|
||||||
```
|
|
||||||
|
|
||||||
The `addPrefix()` method takes a namespace prefix and a path where to
|
|
||||||
look for the classes as arguments.
|
|
||||||
|
|
||||||
You can also register a sub-namespaces:
|
|
||||||
|
|
||||||
```php
|
|
||||||
$loader->addPrefix('Doctrine\\Common', __DIR__.'/vendor/doctrine-common/lib');
|
|
||||||
```
|
|
||||||
|
|
||||||
The order of registration is significant and the first registered namespace
|
|
||||||
takes precedence over later registered one.
|
|
||||||
|
|
||||||
You can also register more than one path for a given namespace:
|
|
||||||
|
|
||||||
```php
|
|
||||||
$loader->addPrefix('Symfony', array(__DIR__.'/src', __DIR__.'/symfony/src'));
|
|
||||||
```
|
|
||||||
|
|
||||||
Alternatively, you can use the `addPrefixes()` method to register more
|
|
||||||
than one namespace at once:
|
|
||||||
|
|
||||||
```php
|
|
||||||
$loader->addPrefixes(array(
|
|
||||||
'Symfony' => array(__DIR__.'/src', __DIR__.'/symfony/src'),
|
|
||||||
'Doctrine\\Common' => __DIR__.'/vendor/doctrine-common/lib',
|
|
||||||
'Doctrine' => __DIR__.'/vendor/doctrine/lib',
|
|
||||||
'Monolog' => __DIR__.'/vendor/monolog/src',
|
|
||||||
));
|
|
||||||
```
|
|
||||||
|
|
||||||
For better performance, you can use the APC class loader:
|
|
||||||
|
|
||||||
```php
|
|
||||||
require_once __DIR__.'/src/Symfony/Component/ClassLoader/ClassLoader.php';
|
|
||||||
require_once __DIR__.'/src/Symfony/Component/ClassLoader/ApcClassLoader.php';
|
|
||||||
|
|
||||||
use Symfony\Component\ClassLoader\ClassLoader;
|
|
||||||
use Symfony\Component\ClassLoader\ApcClassLoader;
|
|
||||||
|
|
||||||
$loader = new ClassLoader();
|
|
||||||
$loader->addPrefix('Symfony', __DIR__.'/src');
|
|
||||||
|
|
||||||
$loader = new ApcClassLoader('apc.prefix.', $loader);
|
|
||||||
$loader->register();
|
|
||||||
```
|
|
||||||
|
|
||||||
Furthermore, the component provides tools to aggregate classes into a single
|
|
||||||
file, which is especially useful to improve performance on servers that do not
|
|
||||||
provide byte caches.
|
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
* [Documentation](https://symfony.com/doc/current/components/class_loader/index.html)
|
||||||
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
$ cd path/to/Symfony/Component/ClassLoader/
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
$ composer install
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
$ phpunit
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
|
@ -1,17 +1,15 @@
|
|||||||
Config Component
|
Config Component
|
||||||
================
|
================
|
||||||
|
|
||||||
Config provides the infrastructure for loading configurations from different
|
The Config component provides several classes to help you find, load, combine,
|
||||||
data sources and optionally monitoring these data sources for changes. There
|
autofill and validate configuration values of any kind, whatever their source
|
||||||
are additional tools for validating, normalizing and handling of defaults that
|
may be (YAML, XML, INI files, or for instance a database).
|
||||||
can optionally be used to convert from different formats to arrays.
|
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
* [Documentation](https://symfony.com/doc/current/components/config/index.html)
|
||||||
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
$ cd path/to/Symfony/Component/Config/
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
$ composer install
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
$ phpunit
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
|
|
||||||
|
@ -1,67 +1,20 @@
|
|||||||
Console Component
|
Console Component
|
||||||
=================
|
=================
|
||||||
|
|
||||||
Console eases the creation of beautiful and testable command line interfaces.
|
The Console component eases the creation of beautiful and testable command line
|
||||||
|
interfaces.
|
||||||
The Application object manages the CLI application:
|
|
||||||
|
|
||||||
```php
|
|
||||||
use Symfony\Component\Console\Application;
|
|
||||||
|
|
||||||
$console = new Application();
|
|
||||||
$console->run();
|
|
||||||
```
|
|
||||||
|
|
||||||
The ``run()`` method parses the arguments and options passed on the command
|
|
||||||
line and executes the right command.
|
|
||||||
|
|
||||||
Registering a new command can easily be done via the ``register()`` method,
|
|
||||||
which returns a ``Command`` instance:
|
|
||||||
|
|
||||||
```php
|
|
||||||
use Symfony\Component\Console\Input\InputInterface;
|
|
||||||
use Symfony\Component\Console\Input\InputArgument;
|
|
||||||
use Symfony\Component\Console\Input\InputOption;
|
|
||||||
use Symfony\Component\Console\Output\OutputInterface;
|
|
||||||
|
|
||||||
$console
|
|
||||||
->register('ls')
|
|
||||||
->setDefinition(array(
|
|
||||||
new InputArgument('dir', InputArgument::REQUIRED, 'Directory name'),
|
|
||||||
))
|
|
||||||
->setDescription('Displays the files in the given directory')
|
|
||||||
->setCode(function (InputInterface $input, OutputInterface $output) {
|
|
||||||
$dir = $input->getArgument('dir');
|
|
||||||
|
|
||||||
$output->writeln(sprintf('Dir listing for <info>%s</info>', $dir));
|
|
||||||
})
|
|
||||||
;
|
|
||||||
```
|
|
||||||
|
|
||||||
You can also register new commands via classes.
|
|
||||||
|
|
||||||
The component provides a lot of features like output coloring, input and
|
|
||||||
output abstractions (so that you can easily unit-test your commands),
|
|
||||||
validation, automatic help messages, ...
|
|
||||||
|
|
||||||
Tests
|
|
||||||
-----
|
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
|
||||||
|
|
||||||
$ cd path/to/Symfony/Component/Console/
|
|
||||||
$ composer install
|
|
||||||
$ phpunit
|
|
||||||
|
|
||||||
Third Party
|
|
||||||
-----------
|
|
||||||
|
|
||||||
`Resources/bin/hiddeninput.exe` is a third party binary provided within this
|
|
||||||
component. Find sources and license at https://github.com/Seldaek/hidden-input.
|
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
[The Console Component](https://symfony.com/doc/current/components/console.html)
|
* [Documentation](https://symfony.com/doc/current/components/console/index.html)
|
||||||
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
|
|
||||||
[How to create a Console Command](https://symfony.com/doc/current/cookbook/console/console_command.html)
|
Credits
|
||||||
|
-------
|
||||||
|
|
||||||
|
`Resources/bin/hiddeninput.exe` is a third party binary provided within this
|
||||||
|
component. Find sources and license at https://github.com/Seldaek/hidden-input.
|
||||||
|
@ -1,47 +1,20 @@
|
|||||||
CssSelector Component
|
CssSelector Component
|
||||||
=====================
|
=====================
|
||||||
|
|
||||||
CssSelector converts CSS selectors to XPath expressions.
|
The CssSelector component converts CSS selectors to XPath expressions.
|
||||||
|
|
||||||
The component only goal is to convert CSS selectors to their XPath
|
|
||||||
equivalents:
|
|
||||||
|
|
||||||
```php
|
|
||||||
use Symfony\Component\CssSelector\CssSelector;
|
|
||||||
|
|
||||||
print CssSelector::toXPath('div.item > h4 > a');
|
|
||||||
```
|
|
||||||
|
|
||||||
HTML and XML are different
|
|
||||||
--------------------------
|
|
||||||
|
|
||||||
The `CssSelector` component comes with an `HTML` extension which is enabled by
|
|
||||||
default. If you need to use this component with `XML` documents, you have to
|
|
||||||
disable this `HTML` extension. That's because, `HTML` tag & attribute names
|
|
||||||
are always lower-cased, but case-sensitive in `XML`:
|
|
||||||
|
|
||||||
```php
|
|
||||||
// disable `HTML` extension:
|
|
||||||
CssSelector::disableHtmlExtension();
|
|
||||||
|
|
||||||
// re-enable `HTML` extension:
|
|
||||||
CssSelector::enableHtmlExtension();
|
|
||||||
```
|
|
||||||
|
|
||||||
When the `HTML` extension is enabled, tag names are lower-cased, attribute
|
|
||||||
names are lower-cased, the following extra pseudo-classes are supported:
|
|
||||||
`checked`, `link`, `disabled`, `enabled`, `selected`, `invalid`, `hover`,
|
|
||||||
`visited`, and the `lang()` function is also added.
|
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
|
* [Documentation](https://symfony.com/doc/current/components/css_selector.html)
|
||||||
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
|
|
||||||
|
Credits
|
||||||
|
-------
|
||||||
|
|
||||||
This component is a port of the Python cssselect library
|
This component is a port of the Python cssselect library
|
||||||
[v0.7.1](https://github.com/SimonSapin/cssselect/releases/tag/v0.7.1),
|
[v0.7.1](https://github.com/SimonSapin/cssselect/releases/tag/v0.7.1),
|
||||||
which is distributed under the BSD license.
|
which is distributed under the BSD license.
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
|
||||||
|
|
||||||
$ cd path/to/Symfony/Component/CssSelector/
|
|
||||||
$ composer install
|
|
||||||
$ phpunit
|
|
||||||
|
@ -1,44 +1,13 @@
|
|||||||
Debug Component
|
Debug Component
|
||||||
===============
|
===============
|
||||||
|
|
||||||
Debug provides tools to make debugging easier.
|
The Debug component provides tools to ease debugging PHP code.
|
||||||
|
|
||||||
Enabling all debug tools is as easy as calling the `enable()` method on the
|
|
||||||
main `Debug` class:
|
|
||||||
|
|
||||||
```php
|
|
||||||
use Symfony\Component\Debug\Debug;
|
|
||||||
|
|
||||||
Debug::enable();
|
|
||||||
```
|
|
||||||
|
|
||||||
You can also use the tools individually:
|
|
||||||
|
|
||||||
```php
|
|
||||||
use Symfony\Component\Debug\ErrorHandler;
|
|
||||||
use Symfony\Component\Debug\ExceptionHandler;
|
|
||||||
|
|
||||||
error_reporting(-1);
|
|
||||||
|
|
||||||
ErrorHandler::register($errorReportingLevel);
|
|
||||||
if ('cli' !== php_sapi_name()) {
|
|
||||||
ExceptionHandler::register();
|
|
||||||
} elseif (!ini_get('log_errors') || ini_get('error_log')) {
|
|
||||||
ini_set('display_errors', 1);
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Note that the `Debug::enable()` call also registers the debug class loader
|
|
||||||
from the Symfony ClassLoader component when available.
|
|
||||||
|
|
||||||
This component can optionally take advantage of the features of the HttpKernel
|
|
||||||
and HttpFoundation components.
|
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
* [Documentation](https://symfony.com/doc/current/components/debug/index.html)
|
||||||
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
$ cd path/to/Symfony/Component/Debug/
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
$ composer install
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
$ phpunit
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
|
@ -1,81 +1,14 @@
|
|||||||
DependencyInjection Component
|
DependencyInjection Component
|
||||||
=============================
|
=============================
|
||||||
|
|
||||||
DependencyInjection manages your services via a robust and flexible Dependency
|
The DependencyInjection component allows you to standardize and centralize the
|
||||||
Injection Container.
|
way objects are constructed in your application.
|
||||||
|
|
||||||
Here is a simple example that shows how to register services and parameters:
|
|
||||||
|
|
||||||
```php
|
|
||||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
|
||||||
use Symfony\Component\DependencyInjection\Reference;
|
|
||||||
|
|
||||||
$sc = new ContainerBuilder();
|
|
||||||
$sc
|
|
||||||
->register('foo', '%foo.class%')
|
|
||||||
->addArgument(new Reference('bar'))
|
|
||||||
;
|
|
||||||
$sc->setParameter('foo.class', 'Foo');
|
|
||||||
|
|
||||||
$sc->get('foo');
|
|
||||||
```
|
|
||||||
|
|
||||||
Method Calls (Setter Injection):
|
|
||||||
|
|
||||||
```php
|
|
||||||
$sc = new ContainerBuilder();
|
|
||||||
|
|
||||||
$sc
|
|
||||||
->register('bar', '%bar.class%')
|
|
||||||
->addMethodCall('setFoo', array(new Reference('foo')))
|
|
||||||
;
|
|
||||||
$sc->setParameter('bar.class', 'Bar');
|
|
||||||
|
|
||||||
$sc->get('bar');
|
|
||||||
```
|
|
||||||
|
|
||||||
Factory Class:
|
|
||||||
|
|
||||||
If your service is retrieved by calling a static method:
|
|
||||||
|
|
||||||
```php
|
|
||||||
$sc = new ContainerBuilder();
|
|
||||||
|
|
||||||
$sc
|
|
||||||
->register('bar', '%bar.class%')
|
|
||||||
->setFactoryClass('%bar.class%')
|
|
||||||
->setFactoryMethod('getInstance')
|
|
||||||
->addArgument('Aarrg!!!')
|
|
||||||
;
|
|
||||||
$sc->setParameter('bar.class', 'Bar');
|
|
||||||
|
|
||||||
$sc->get('bar');
|
|
||||||
```
|
|
||||||
|
|
||||||
File Include:
|
|
||||||
|
|
||||||
For some services, especially those that are difficult or impossible to
|
|
||||||
autoload, you may need the container to include a file before
|
|
||||||
instantiating your class.
|
|
||||||
|
|
||||||
```php
|
|
||||||
$sc = new ContainerBuilder();
|
|
||||||
|
|
||||||
$sc
|
|
||||||
->register('bar', '%bar.class%')
|
|
||||||
->setFile('/path/to/file')
|
|
||||||
->addArgument('Aarrg!!!')
|
|
||||||
;
|
|
||||||
$sc->setParameter('bar.class', 'Bar');
|
|
||||||
|
|
||||||
$sc->get('bar');
|
|
||||||
```
|
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
* [Documentation](https://symfony.com/doc/current/components/dependency_injection/index.html)
|
||||||
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
$ cd path/to/Symfony/Component/DependencyInjection/
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
$ composer install
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
$ phpunit
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
|
@ -1,36 +1,13 @@
|
|||||||
DomCrawler Component
|
DomCrawler Component
|
||||||
====================
|
====================
|
||||||
|
|
||||||
DomCrawler eases DOM navigation for HTML and XML documents.
|
The DomCrawler component eases DOM navigation for HTML and XML documents.
|
||||||
|
|
||||||
If you are familiar with jQuery, DomCrawler is a PHP equivalent:
|
|
||||||
|
|
||||||
```php
|
|
||||||
use Symfony\Component\DomCrawler\Crawler;
|
|
||||||
|
|
||||||
$crawler = new Crawler();
|
|
||||||
$crawler->addContent('<html><body><p>Hello World!</p></body></html>');
|
|
||||||
|
|
||||||
print $crawler->filterXPath('descendant-or-self::body/p')->text();
|
|
||||||
```
|
|
||||||
|
|
||||||
If you are also using the CssSelector component, you can use CSS Selectors
|
|
||||||
instead of XPath expressions:
|
|
||||||
|
|
||||||
```php
|
|
||||||
use Symfony\Component\DomCrawler\Crawler;
|
|
||||||
|
|
||||||
$crawler = new Crawler();
|
|
||||||
$crawler->addContent('<html><body><p>Hello World!</p></body></html>');
|
|
||||||
|
|
||||||
print $crawler->filter('body > p')->text();
|
|
||||||
```
|
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
* [Documentation](https://symfony.com/doc/current/components/dom_crawler.html)
|
||||||
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
$ cd path/to/Symfony/Component/DomCrawler/
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
$ composer install
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
$ phpunit
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
|
@ -1,27 +1,15 @@
|
|||||||
EventDispatcher Component
|
EventDispatcher Component
|
||||||
=========================
|
=========================
|
||||||
|
|
||||||
The Symfony EventDispatcher component implements the Mediator pattern in a
|
The EventDispatcher component provides tools that allow your application
|
||||||
simple and effective way to make your projects truly extensible.
|
components to communicate with each other by dispatching events and listening to
|
||||||
|
them.
|
||||||
```php
|
|
||||||
use Symfony\Component\EventDispatcher\EventDispatcher;
|
|
||||||
use Symfony\Component\EventDispatcher\Event;
|
|
||||||
|
|
||||||
$dispatcher = new EventDispatcher();
|
|
||||||
|
|
||||||
$dispatcher->addListener('event_name', function (Event $event) {
|
|
||||||
// ...
|
|
||||||
});
|
|
||||||
|
|
||||||
$dispatcher->dispatch('event_name');
|
|
||||||
```
|
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
* [Documentation](https://symfony.com/doc/current/components/event_dispatcher/index.html)
|
||||||
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
$ cd path/to/Symfony/Component/EventDispatcher/
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
$ composer install
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
$ phpunit
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
|
@ -1,47 +1,13 @@
|
|||||||
Filesystem Component
|
Filesystem Component
|
||||||
====================
|
====================
|
||||||
|
|
||||||
Filesystem provides basic utility to manipulate the file system:
|
The Filesystem component provides basic utilities for the filesystem.
|
||||||
|
|
||||||
```php
|
|
||||||
<?php
|
|
||||||
|
|
||||||
use Symfony\Component\Filesystem\Filesystem;
|
|
||||||
|
|
||||||
$filesystem = new Filesystem();
|
|
||||||
|
|
||||||
$filesystem->copy($originFile, $targetFile, $override = false);
|
|
||||||
|
|
||||||
$filesystem->mkdir($dirs, $mode = 0777);
|
|
||||||
|
|
||||||
$filesystem->touch($files, $time = null, $atime = null);
|
|
||||||
|
|
||||||
$filesystem->remove($files);
|
|
||||||
|
|
||||||
$filesystem->exists($files);
|
|
||||||
|
|
||||||
$filesystem->chmod($files, $mode, $umask = 0000, $recursive = false);
|
|
||||||
|
|
||||||
$filesystem->chown($files, $user, $recursive = false);
|
|
||||||
|
|
||||||
$filesystem->chgrp($files, $group, $recursive = false);
|
|
||||||
|
|
||||||
$filesystem->rename($origin, $target);
|
|
||||||
|
|
||||||
$filesystem->symlink($originDir, $targetDir, $copyOnWindows = false);
|
|
||||||
|
|
||||||
$filesystem->makePathRelative($endPath, $startPath);
|
|
||||||
|
|
||||||
$filesystem->mirror($originDir, $targetDir, \Traversable $iterator = null, $options = array());
|
|
||||||
|
|
||||||
$filesystem->isAbsolutePath($file);
|
|
||||||
```
|
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
* [Documentation](https://symfony.com/doc/current/components/filesystem/index.html)
|
||||||
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
$ cd path/to/Symfony/Component/Filesystem/
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
$ composer install
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
$ phpunit
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
|
@ -1,53 +1,14 @@
|
|||||||
Finder Component
|
Finder Component
|
||||||
================
|
================
|
||||||
|
|
||||||
Finder finds files and directories via an intuitive fluent interface.
|
The Finder component finds files and directories via an intuitive fluent
|
||||||
|
interface.
|
||||||
```php
|
|
||||||
use Symfony\Component\Finder\Finder;
|
|
||||||
|
|
||||||
$finder = new Finder();
|
|
||||||
|
|
||||||
$iterator = $finder
|
|
||||||
->files()
|
|
||||||
->name('*.php')
|
|
||||||
->depth(0)
|
|
||||||
->size('>= 1K')
|
|
||||||
->in(__DIR__);
|
|
||||||
|
|
||||||
foreach ($iterator as $file) {
|
|
||||||
print $file->getRealpath()."\n";
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
The iterator returns instances of [Symfony\Component\Finder\SplFileInfo\SplFileInfo][1].
|
|
||||||
Besides the build-in methods inherited from [\SplFileInfo][2] (`getPerms()`, `getSize()`, ...),
|
|
||||||
you can also use `getRelativePath()` and `getRelativePathname()`. Read the
|
|
||||||
[official documentation][3] for more information.
|
|
||||||
|
|
||||||
But you can also use it to find files stored remotely like in this example where
|
|
||||||
we are looking for files on Amazon S3:
|
|
||||||
|
|
||||||
```php
|
|
||||||
$s3 = new \Zend_Service_Amazon_S3($key, $secret);
|
|
||||||
$s3->registerStreamWrapper("s3");
|
|
||||||
|
|
||||||
$finder = new Finder();
|
|
||||||
$finder->name('photos*')->size('< 100K')->date('since 1 hour ago');
|
|
||||||
foreach ($finder->in('s3://bucket-name') as $file) {
|
|
||||||
print $file->getFilename()."\n";
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
* [Documentation](https://symfony.com/doc/current/components/finder.html)
|
||||||
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
$ cd path/to/Symfony/Component/Finder/
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
$ composer install
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
$ phpunit
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
|
|
||||||
[1]: http://api.symfony.com/2.5/Symfony/Component/Finder/SplFileInfo.html
|
|
||||||
[2]: http://php.net/splfileinfo
|
|
||||||
[3]: https://symfony.com/doc/current/components/finder.html#usage
|
|
||||||
|
@ -1,26 +1,13 @@
|
|||||||
Form Component
|
Form Component
|
||||||
==============
|
==============
|
||||||
|
|
||||||
Form provides tools for defining forms, rendering and mapping request data to
|
The Form component allows you to easily create, process and reuse HTML forms.
|
||||||
related models. Furthermore it provides integration with the Validation
|
|
||||||
component.
|
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
Silex integration:
|
* [Documentation](https://symfony.com/doc/current/components/form/index.html)
|
||||||
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
https://github.com/silexphp/Silex/blob/master/src/Silex/Provider/FormServiceProvider.php
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
Documentation:
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
|
|
||||||
https://symfony.com/doc/2.3/book/forms.html
|
|
||||||
|
|
||||||
Resources
|
|
||||||
---------
|
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
|
||||||
|
|
||||||
$ cd path/to/Symfony/Component/Form/
|
|
||||||
$ composer install
|
|
||||||
$ phpunit
|
|
||||||
|
@ -1,56 +1,14 @@
|
|||||||
HttpFoundation Component
|
HttpFoundation Component
|
||||||
========================
|
========================
|
||||||
|
|
||||||
HttpFoundation defines an object-oriented layer for the HTTP specification.
|
The HttpFoundation component defines an object-oriented layer for the HTTP
|
||||||
|
specification.
|
||||||
It provides an abstraction for requests, responses, uploaded files, cookies,
|
|
||||||
sessions, ...
|
|
||||||
|
|
||||||
In this example, we get a Request object from the current PHP global
|
|
||||||
variables:
|
|
||||||
|
|
||||||
```php
|
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
|
||||||
use Symfony\Component\HttpFoundation\Response;
|
|
||||||
|
|
||||||
$request = Request::createFromGlobals();
|
|
||||||
echo $request->getPathInfo();
|
|
||||||
```
|
|
||||||
|
|
||||||
You can also create a Request directly -- that's interesting for unit testing:
|
|
||||||
|
|
||||||
```php
|
|
||||||
$request = Request::create('/?foo=bar', 'GET');
|
|
||||||
echo $request->getPathInfo();
|
|
||||||
```
|
|
||||||
|
|
||||||
And here is how to create and send a Response:
|
|
||||||
|
|
||||||
```php
|
|
||||||
$response = new Response('Not Found', 404, array('Content-Type' => 'text/plain'));
|
|
||||||
$response->send();
|
|
||||||
```
|
|
||||||
|
|
||||||
The Request and the Response classes have many other methods that implement
|
|
||||||
the HTTP specification.
|
|
||||||
|
|
||||||
Loading
|
|
||||||
-------
|
|
||||||
|
|
||||||
If you are not using Composer but are using PHP 5.3.x, you must add the following to your autoloader:
|
|
||||||
|
|
||||||
```php
|
|
||||||
// SessionHandlerInterface
|
|
||||||
if (!interface_exists('SessionHandlerInterface')) {
|
|
||||||
$loader->registerPrefixFallback(__DIR__.'/../vendor/symfony/src/Symfony/Component/HttpFoundation/Resources/stubs');
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
* [Documentation](https://symfony.com/doc/current/components/http_foundation/index.html)
|
||||||
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
$ cd path/to/Symfony/Component/HttpFoundation/
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
$ composer install
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
$ phpunit
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
|
@ -1,99 +1,16 @@
|
|||||||
HttpKernel Component
|
HttpKernel Component
|
||||||
====================
|
====================
|
||||||
|
|
||||||
HttpKernel provides the building blocks to create flexible and fast HTTP-based
|
The HttpKernel component provides a structured process for converting a Request
|
||||||
frameworks.
|
into a Response by making use of the EventDispatcher component. It's flexible
|
||||||
|
enough to create a full-stack framework (Symfony), a micro-framework (Silex) or
|
||||||
``HttpKernelInterface`` is the core interface of the Symfony full-stack
|
an advanced CMS system (Drupal).
|
||||||
framework:
|
|
||||||
|
|
||||||
```php
|
|
||||||
interface HttpKernelInterface
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Handles a Request to convert it to a Response.
|
|
||||||
*
|
|
||||||
* @param Request $request A Request instance
|
|
||||||
*
|
|
||||||
* @return Response A Response instance
|
|
||||||
*/
|
|
||||||
function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true);
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
It takes a ``Request`` as an input and should return a ``Response`` as an
|
|
||||||
output. Using this interface makes your code compatible with all frameworks
|
|
||||||
using the Symfony components. And this will give you many cool features for
|
|
||||||
free.
|
|
||||||
|
|
||||||
Creating a framework based on the Symfony components is really easy. Here is
|
|
||||||
a very simple, but fully-featured framework based on the Symfony components:
|
|
||||||
|
|
||||||
```php
|
|
||||||
$routes = new RouteCollection();
|
|
||||||
$routes->add('hello', new Route('/hello', array('_controller' =>
|
|
||||||
function (Request $request) {
|
|
||||||
return new Response(sprintf("Hello %s", $request->get('name')));
|
|
||||||
}
|
|
||||||
)));
|
|
||||||
|
|
||||||
$request = Request::createFromGlobals();
|
|
||||||
|
|
||||||
$context = new RequestContext();
|
|
||||||
$context->fromRequest($request);
|
|
||||||
|
|
||||||
$matcher = new UrlMatcher($routes, $context);
|
|
||||||
|
|
||||||
$dispatcher = new EventDispatcher();
|
|
||||||
$dispatcher->addSubscriber(new RouterListener($matcher));
|
|
||||||
|
|
||||||
$resolver = new ControllerResolver();
|
|
||||||
|
|
||||||
$kernel = new HttpKernel($dispatcher, $resolver);
|
|
||||||
|
|
||||||
$kernel->handle($request)->send();
|
|
||||||
```
|
|
||||||
|
|
||||||
This is all you need to create a flexible framework with the Symfony
|
|
||||||
components.
|
|
||||||
|
|
||||||
Want to add an HTTP reverse proxy and benefit from HTTP caching and Edge Side
|
|
||||||
Includes?
|
|
||||||
|
|
||||||
```php
|
|
||||||
$kernel = new HttpKernel($dispatcher, $resolver);
|
|
||||||
|
|
||||||
$kernel = new HttpCache($kernel, new Store(__DIR__.'/cache'));
|
|
||||||
```
|
|
||||||
|
|
||||||
Want to functional test this small framework?
|
|
||||||
|
|
||||||
```php
|
|
||||||
$client = new Client($kernel);
|
|
||||||
$crawler = $client->request('GET', '/hello/Fabien');
|
|
||||||
|
|
||||||
$this->assertEquals('Fabien', $crawler->filter('p > span')->text());
|
|
||||||
```
|
|
||||||
|
|
||||||
Want nice error pages instead of ugly PHP exceptions?
|
|
||||||
|
|
||||||
```php
|
|
||||||
$dispatcher->addSubscriber(new ExceptionListener(function (Request $request) {
|
|
||||||
$msg = 'Something went wrong! ('.$request->get('exception')->getMessage().')';
|
|
||||||
|
|
||||||
return new Response($msg, 500);
|
|
||||||
}));
|
|
||||||
```
|
|
||||||
|
|
||||||
And that's why the simple looking ``HttpKernelInterface`` is so powerful. It
|
|
||||||
gives you access to a lot of cool features, ready to be used out of the box,
|
|
||||||
with no efforts.
|
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
* [Documentation](https://symfony.com/doc/current/components/http_kernel/index.html)
|
||||||
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
$ cd path/to/Symfony/Component/HttpKernel/
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
$ composer install
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
$ phpunit
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
|
@ -1,25 +1,19 @@
|
|||||||
Intl Component
|
Intl Component
|
||||||
=============
|
=============
|
||||||
|
|
||||||
A PHP replacement layer for the C intl extension that includes additional data
|
A PHP replacement layer for the C intl extension that also provides access to
|
||||||
from the ICU library.
|
the localization data of the ICU library.
|
||||||
|
|
||||||
The replacement layer is limited to the locale "en". If you want to use other
|
The replacement layer is limited to the locale "en". If you want to use other
|
||||||
locales, you should [install the intl extension] [0] instead.
|
locales, you should [install the intl PHP extension] [0] instead.
|
||||||
|
|
||||||
Documentation
|
|
||||||
-------------
|
|
||||||
|
|
||||||
The documentation for the component can be found [online] [1].
|
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
* [Documentation](https://symfony.com/doc/current/components/intl.html)
|
||||||
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
$ cd path/to/Symfony/Component/Intl/
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
$ composer install
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
$ phpunit
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
|
|
||||||
[0]: http://www.php.net/manual/en/intl.setup.php
|
[0]: http://www.php.net/manual/en/intl.setup.php
|
||||||
[1]: https://symfony.com/doc/2.3/components/intl.html
|
|
||||||
|
@ -4,5 +4,5 @@ Locale Component
|
|||||||
Locale provides fallback code to handle cases when the ``intl`` extension is
|
Locale provides fallback code to handle cases when the ``intl`` extension is
|
||||||
missing.
|
missing.
|
||||||
|
|
||||||
The Locale component is deprecated since version 2.3 and will be removed in
|
The Locale component is deprecated since version 2.3 and was removed in
|
||||||
Symfony 3.0. You should use the more capable Intl component instead.
|
Symfony 3.0. You should use the more capable Intl component instead.
|
||||||
|
@ -1,115 +1,15 @@
|
|||||||
OptionsResolver Component
|
OptionsResolver Component
|
||||||
=========================
|
=========================
|
||||||
|
|
||||||
OptionsResolver helps at configuring objects with option arrays.
|
The OptionsResolver component is `array_replace on steroids. It allows you to
|
||||||
|
create an options system with required options, defaults, validation (type,
|
||||||
It supports default values on different levels of your class hierarchy,
|
value), normalization and more.
|
||||||
option constraints (required vs. optional, allowed values) and lazy options
|
|
||||||
whose default value depends on the value of another option.
|
|
||||||
|
|
||||||
The following example demonstrates a Person class with two required options
|
|
||||||
"firstName" and "lastName" and two optional options "age" and "gender", where
|
|
||||||
the default value of "gender" is derived from the passed first name, if
|
|
||||||
possible, and may only be one of "male" and "female".
|
|
||||||
|
|
||||||
```php
|
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
|
|
||||||
use Symfony\Component\OptionsResolver\Options;
|
|
||||||
|
|
||||||
class Person
|
|
||||||
{
|
|
||||||
protected $options;
|
|
||||||
|
|
||||||
public function __construct(array $options = array())
|
|
||||||
{
|
|
||||||
$resolver = new OptionsResolver();
|
|
||||||
$this->setDefaultOptions($resolver);
|
|
||||||
|
|
||||||
$this->options = $resolver->resolve($options);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function setDefaultOptions(OptionsResolverInterface $resolver)
|
|
||||||
{
|
|
||||||
$resolver->setRequired(array(
|
|
||||||
'firstName',
|
|
||||||
'lastName',
|
|
||||||
));
|
|
||||||
|
|
||||||
$resolver->setDefaults(array(
|
|
||||||
'age' => null,
|
|
||||||
'gender' => function (Options $options) {
|
|
||||||
if (self::isKnownMaleName($options['firstName'])) {
|
|
||||||
return 'male';
|
|
||||||
}
|
|
||||||
|
|
||||||
return 'female';
|
|
||||||
},
|
|
||||||
));
|
|
||||||
|
|
||||||
$resolver->setAllowedValues(array(
|
|
||||||
'gender' => array('male', 'female'),
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
We can now easily instantiate a Person object:
|
|
||||||
|
|
||||||
```php
|
|
||||||
// 'gender' is implicitly set to 'female'
|
|
||||||
$person = new Person(array(
|
|
||||||
'firstName' => 'Jane',
|
|
||||||
'lastName' => 'Doe',
|
|
||||||
));
|
|
||||||
```
|
|
||||||
|
|
||||||
We can also override the default values of the optional options:
|
|
||||||
|
|
||||||
```php
|
|
||||||
$person = new Person(array(
|
|
||||||
'firstName' => 'Abdullah',
|
|
||||||
'lastName' => 'Mogashi',
|
|
||||||
'gender' => 'male',
|
|
||||||
'age' => 30,
|
|
||||||
));
|
|
||||||
```
|
|
||||||
|
|
||||||
Options can be added or changed in subclasses by overriding the `setDefaultOptions`
|
|
||||||
method:
|
|
||||||
|
|
||||||
```php
|
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
|
||||||
use Symfony\Component\OptionsResolver\Options;
|
|
||||||
|
|
||||||
class Employee extends Person
|
|
||||||
{
|
|
||||||
protected function setDefaultOptions(OptionsResolverInterface $resolver)
|
|
||||||
{
|
|
||||||
parent::setDefaultOptions($resolver);
|
|
||||||
|
|
||||||
$resolver->setRequired(array(
|
|
||||||
'birthDate',
|
|
||||||
));
|
|
||||||
|
|
||||||
$resolver->setDefaults(array(
|
|
||||||
// $previousValue contains the default value configured in the
|
|
||||||
// parent class
|
|
||||||
'age' => function (Options $options, $previousValue) {
|
|
||||||
return self::calculateAge($options['birthDate']);
|
|
||||||
}
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
* [Documentation](https://symfony.com/doc/current/components/options_resolver.html)
|
||||||
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
$ cd path/to/Symfony/Component/OptionsResolver/
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
$ composer install
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
$ phpunit
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
|
@ -1,51 +1,13 @@
|
|||||||
Process Component
|
Process Component
|
||||||
=================
|
=================
|
||||||
|
|
||||||
Process executes commands in sub-processes.
|
The Process component executes commands in sub-processes.
|
||||||
|
|
||||||
In this example, we run a simple directory listing and get the result back:
|
|
||||||
|
|
||||||
```php
|
|
||||||
use Symfony\Component\Process\Process;
|
|
||||||
|
|
||||||
$process = new Process('ls -lsa');
|
|
||||||
$process->setTimeout(3600);
|
|
||||||
$process->run();
|
|
||||||
if (!$process->isSuccessful()) {
|
|
||||||
throw new RuntimeException($process->getErrorOutput());
|
|
||||||
}
|
|
||||||
|
|
||||||
print $process->getOutput();
|
|
||||||
```
|
|
||||||
|
|
||||||
You can think that this is easy to achieve with plain PHP but it's not especially
|
|
||||||
if you want to take care of the subtle differences between the different platforms.
|
|
||||||
|
|
||||||
And if you want to be able to get some feedback in real-time, just pass an
|
|
||||||
anonymous function to the ``run()`` method and you will get the output buffer
|
|
||||||
as it becomes available:
|
|
||||||
|
|
||||||
```php
|
|
||||||
use Symfony\Component\Process\Process;
|
|
||||||
|
|
||||||
$process = new Process('ls -lsa');
|
|
||||||
$process->run(function ($type, $buffer) {
|
|
||||||
if (Process::ERR === $type) {
|
|
||||||
echo 'ERR > '.$buffer;
|
|
||||||
} else {
|
|
||||||
echo 'OUT > '.$buffer;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
That's great if you want to execute a long running command (like rsync-ing files to a
|
|
||||||
remote server) and give feedback to the user in real-time.
|
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
* [Documentation](https://symfony.com/doc/current/components/process.html)
|
||||||
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
$ cd path/to/Symfony/Component/Process/
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
$ composer install
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
$ phpunit
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
PropertyAccess Component
|
PropertyAccess Component
|
||||||
========================
|
========================
|
||||||
|
|
||||||
PropertyAccess reads/writes values from/to object/array graphs using a simple
|
The PropertyAccess component provides function to read and write from/to an
|
||||||
string notation.
|
object or array using a simple string notation.
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
* [Documentation](https://symfony.com/doc/current/components/property_access/index.html)
|
||||||
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
$ cd path/to/Symfony/Component/PropertyAccess/
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
$ composer install
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
$ phpunit
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
|
@ -1,36 +1,13 @@
|
|||||||
Routing Component
|
Routing Component
|
||||||
=================
|
=================
|
||||||
|
|
||||||
Routing associates a request with the code that will convert it to a response.
|
The Routing component maps an HTTP request to a set of configuration variables.
|
||||||
|
|
||||||
The example below demonstrates how you can set up a fully working routing
|
|
||||||
system:
|
|
||||||
|
|
||||||
```php
|
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
|
||||||
use Symfony\Component\Routing\Matcher\UrlMatcher;
|
|
||||||
use Symfony\Component\Routing\RequestContext;
|
|
||||||
use Symfony\Component\Routing\RouteCollection;
|
|
||||||
use Symfony\Component\Routing\Route;
|
|
||||||
|
|
||||||
$routes = new RouteCollection();
|
|
||||||
$routes->add('hello', new Route('/hello', array('controller' => 'foo')));
|
|
||||||
|
|
||||||
$context = new RequestContext();
|
|
||||||
|
|
||||||
// this is optional and can be done without a Request instance
|
|
||||||
$context->fromRequest(Request::createFromGlobals());
|
|
||||||
|
|
||||||
$matcher = new UrlMatcher($routes, $context);
|
|
||||||
|
|
||||||
$parameters = $matcher->match('/hello');
|
|
||||||
```
|
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
* [Documentation](https://symfony.com/doc/current/components/routing/index.html)
|
||||||
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
$ cd path/to/Symfony/Component/Routing/
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
$ composer install
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
$ phpunit
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
|
@ -1,23 +1,18 @@
|
|||||||
Security Component
|
Security Component
|
||||||
==================
|
==================
|
||||||
|
|
||||||
Security provides an infrastructure for sophisticated authorization systems,
|
The Security component provides a complete security system for your web
|
||||||
which makes it possible to easily separate the actual authorization logic from
|
application. It ships with facilities for authenticating using HTTP basic or
|
||||||
so called user providers that hold the users credentials. It is inspired by
|
digest authentication, interactive form login or X.509 certificate login, but
|
||||||
the Java Spring framework.
|
also allows you to implement your own authentication strategies. Furthermore,
|
||||||
|
the component provides ways to authorize authenticated users based on their
|
||||||
|
roles, and it contains an advanced ACL system.
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
Documentation:
|
* [Documentation](https://symfony.com/doc/current/components/security/index.html)
|
||||||
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
https://symfony.com/doc/2.3/book/security.html
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
Resources
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
---------
|
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
|
||||||
|
|
||||||
$ cd path/to/Symfony/Component/Security/
|
|
||||||
$ composer install
|
|
||||||
$ phpunit
|
|
||||||
|
@ -1,15 +1,16 @@
|
|||||||
Serializer Component
|
Serializer Component
|
||||||
====================
|
====================
|
||||||
|
|
||||||
With the Serializer component it's possible to handle serializing data structures,
|
With the Serializer component it's possible to handle serializing data
|
||||||
including object graphs, into array structures or other formats like XML and JSON.
|
structures, including object graphs, into array structures or other formats like
|
||||||
It can also handle deserializing XML and JSON back to object graphs.
|
XML and JSON. It can also handle deserializing XML and JSON back to object
|
||||||
|
graphs.
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
* [Documentation](https://symfony.com/doc/current/components/serializer.html)
|
||||||
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
$ cd path/to/Symfony/Component/Serializer/
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
$ composer install
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
$ phpunit
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
Stopwatch Component
|
Stopwatch Component
|
||||||
===================
|
===================
|
||||||
|
|
||||||
Stopwatch provides a way to profile code.
|
The Stopwatch component provides a way to profile code.
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
* [Documentation](https://symfony.com/doc/current/components/stopwatch.html)
|
||||||
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
$ cd path/to/Symfony/Component/Stopwatch/
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
$ composer install
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
$ phpunit
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
|
@ -1,18 +1,19 @@
|
|||||||
Templating Component
|
Templating Component
|
||||||
====================
|
====================
|
||||||
|
|
||||||
Templating provides all the tools needed to build any kind of template system.
|
The Templating component provides all the tools needed to build any kind of
|
||||||
|
template system.
|
||||||
|
|
||||||
It provides an infrastructure to load template files and optionally monitor
|
It provides an infrastructure to load template files and optionally monitor them
|
||||||
them for changes. It also provides a concrete template engine implementation
|
for changes. It also provides a concrete template engine implementation using
|
||||||
using PHP with additional tools for escaping and separating templates into
|
PHP with additional tools for escaping and separating templates into blocks and
|
||||||
blocks and layouts.
|
layouts.
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
* [Documentation](https://symfony.com/doc/current/components/templating/index.html)
|
||||||
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
$ cd path/to/Symfony/Component/Templating/
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
$ composer install
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
$ phpunit
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
|
@ -1,37 +1,13 @@
|
|||||||
Translation Component
|
Translation Component
|
||||||
=====================
|
=====================
|
||||||
|
|
||||||
Translation provides tools for loading translation files and generating
|
The Translation component provides tools to internationalize your application.
|
||||||
translated strings from these including support for pluralization.
|
|
||||||
|
|
||||||
```php
|
|
||||||
use Symfony\Component\Translation\Translator;
|
|
||||||
use Symfony\Component\Translation\MessageSelector;
|
|
||||||
use Symfony\Component\Translation\Loader\ArrayLoader;
|
|
||||||
|
|
||||||
$translator = new Translator('fr_FR', new MessageSelector());
|
|
||||||
$translator->setFallbackLocales(array('fr'));
|
|
||||||
$translator->addLoader('array', new ArrayLoader());
|
|
||||||
$translator->addResource('array', array(
|
|
||||||
'Hello World!' => 'Bonjour',
|
|
||||||
), 'fr');
|
|
||||||
|
|
||||||
echo $translator->trans('Hello World!')."\n";
|
|
||||||
```
|
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
Silex integration:
|
* [Documentation](https://symfony.com/doc/current/components/translation/index.html)
|
||||||
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
https://github.com/silexphp/Silex/blob/master/src/Silex/Provider/TranslationServiceProvider.php
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
Documentation:
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
|
|
||||||
https://symfony.com/doc/2.3/book/translation.html
|
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
|
||||||
|
|
||||||
$ cd path/to/Symfony/Component/Translation/
|
|
||||||
$ composer install
|
|
||||||
$ phpunit
|
|
||||||
|
@ -1,126 +1,16 @@
|
|||||||
Validator Component
|
Validator Component
|
||||||
===================
|
===================
|
||||||
|
|
||||||
This component is based on the JSR-303 Bean Validation specification and
|
The Validator component provides tools to validate values following the
|
||||||
enables specifying validation rules for classes using XML, YAML, PHP or
|
[JSR-303 Bean Validation specification][1].
|
||||||
annotations, which can then be checked against instances of these classes.
|
|
||||||
|
|
||||||
Usage
|
|
||||||
-----
|
|
||||||
|
|
||||||
The component provides "validation constraints", which are simple objects
|
|
||||||
containing the rules for the validation. Let's validate a simple string
|
|
||||||
as an example:
|
|
||||||
|
|
||||||
```php
|
|
||||||
use Symfony\Component\Validator\Validation;
|
|
||||||
use Symfony\Component\Validator\Constraints\Length;
|
|
||||||
|
|
||||||
$validator = Validation::createValidator();
|
|
||||||
|
|
||||||
$violations = $validator->validateValue('Bernhard', new Length(array('min' => 10)));
|
|
||||||
```
|
|
||||||
|
|
||||||
This validation will fail because the given string is shorter than ten
|
|
||||||
characters. The precise errors, here called "constraint violations", are
|
|
||||||
returned by the validator. You can analyze these or return them to the user.
|
|
||||||
If the violation list is empty, validation succeeded.
|
|
||||||
|
|
||||||
Validation of arrays is possible using the `Collection` constraint:
|
|
||||||
|
|
||||||
```php
|
|
||||||
use Symfony\Component\Validator\Validation;
|
|
||||||
use Symfony\Component\Validator\Constraints as Assert;
|
|
||||||
|
|
||||||
$validator = Validation::createValidator();
|
|
||||||
|
|
||||||
$constraint = new Assert\Collection(array(
|
|
||||||
'name' => new Assert\Collection(array(
|
|
||||||
'first_name' => new Assert\Length(array('min' => 101)),
|
|
||||||
'last_name' => new Assert\Length(array('min' => 1)),
|
|
||||||
)),
|
|
||||||
'email' => new Assert\Email(),
|
|
||||||
'simple' => new Assert\Length(array('min' => 102)),
|
|
||||||
'gender' => new Assert\Choice(array(3, 4)),
|
|
||||||
'file' => new Assert\File(),
|
|
||||||
'password' => new Assert\Length(array('min' => 60)),
|
|
||||||
));
|
|
||||||
|
|
||||||
$violations = $validator->validateValue($input, $constraint);
|
|
||||||
```
|
|
||||||
|
|
||||||
Again, the validator returns the list of violations.
|
|
||||||
|
|
||||||
Validation of objects is possible using "constraint mapping". With such
|
|
||||||
a mapping you can put constraints onto properties and objects of classes.
|
|
||||||
Whenever an object of this class is validated, its properties and
|
|
||||||
method results are matched against the constraints.
|
|
||||||
|
|
||||||
```php
|
|
||||||
use Symfony\Component\Validator\Validation;
|
|
||||||
use Symfony\Component\Validator\Constraints as Assert;
|
|
||||||
|
|
||||||
class User
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @Assert\Length(min = 3)
|
|
||||||
* @Assert\NotBlank
|
|
||||||
*/
|
|
||||||
private $name;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Assert\Email
|
|
||||||
* @Assert\NotBlank
|
|
||||||
*/
|
|
||||||
private $email;
|
|
||||||
|
|
||||||
public function __construct($name, $email)
|
|
||||||
{
|
|
||||||
$this->name = $name;
|
|
||||||
$this->email = $email;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Assert\True(message = "The user should have a Google Mail account")
|
|
||||||
*/
|
|
||||||
public function isGmailUser()
|
|
||||||
{
|
|
||||||
return false !== strpos($this->email, '@gmail.com');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$validator = Validation::createValidatorBuilder()
|
|
||||||
->enableAnnotationMapping()
|
|
||||||
->getValidator();
|
|
||||||
|
|
||||||
$user = new User('John Doe', 'john@example.com');
|
|
||||||
|
|
||||||
$violations = $validator->validate($user);
|
|
||||||
```
|
|
||||||
|
|
||||||
This example uses the annotation support of Doctrine Common to
|
|
||||||
map constraints to properties and methods. You can also map constraints
|
|
||||||
using XML, YAML or plain PHP, if you dislike annotations or don't want
|
|
||||||
to include Doctrine. Check the documentation for more information about
|
|
||||||
these drivers.
|
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
Silex integration:
|
* [Documentation](https://symfony.com/doc/current/book/validation.html)
|
||||||
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
|
|
||||||
https://github.com/silexphp/Silex/blob/master/src/Silex/Provider/ValidatorServiceProvider.php
|
[1]: http://jcp.org/en/jsr/detail?id=303
|
||||||
|
|
||||||
Documentation:
|
|
||||||
|
|
||||||
https://symfony.com/doc/2.3/book/validation.html
|
|
||||||
|
|
||||||
JSR-303 Specification:
|
|
||||||
|
|
||||||
http://jcp.org/en/jsr/detail?id=303
|
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
|
||||||
|
|
||||||
$ cd path/to/Symfony/Component/Validator/
|
|
||||||
$ composer install
|
|
||||||
$ phpunit
|
|
||||||
|
@ -1,21 +1,13 @@
|
|||||||
Yaml Component
|
Yaml Component
|
||||||
==============
|
==============
|
||||||
|
|
||||||
YAML implements most of the YAML 1.2 specification.
|
The Yaml component loads and dumps YAML files.
|
||||||
|
|
||||||
```php
|
|
||||||
use Symfony\Component\Yaml\Yaml;
|
|
||||||
|
|
||||||
$array = Yaml::parse(file_get_contents(filename));
|
|
||||||
|
|
||||||
print Yaml::dump($array);
|
|
||||||
```
|
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
||||||
You can run the unit tests with the following command:
|
* [Documentation](https://symfony.com/doc/current/components/yaml/index.html)
|
||||||
|
* [Contributing](https://symfony.com/doc/current/contributing/index.html)
|
||||||
$ cd path/to/Symfony/Component/Yaml/
|
* [Report issues](https://github.com/symfony/symfony/issues) and
|
||||||
$ composer install
|
[send Pull Requests](https://github.com/symfony/symfony/pulls)
|
||||||
$ phpunit
|
in the [main Symfony repository](https://github.com/symfony/symfony)
|
||||||
|
Reference in New Issue
Block a user