рд╕рд┐рдореНрдлрдиреА 2.2 рдЖрдЬ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдмреНрд▓реЙрдЧ рд╕реЗ рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдХреА рд╕реВрдЪреА:
- рдХрдВрд╕реЛрд▓: рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рд╕реНрд╡рдд: рдкреВрд░реНрдг;
- рдХрдВрд╕реЛрд▓: рд▓рдВрдмреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рдЧрддрд┐ рдкрдЯреНрдЯреА;
- рдХрдВрд╕реЛрд▓: рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЛрдб рдореЗрдВ рдкрд╛рд╕рд╡рд░реНрдб рдЫрд┐рдкрд╛рдПрдВ;
- рдХрдВрд╕реЛрд▓: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рд╕реЗ рдЪреБрдирдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡;
- рдЦреЛрдЬрдХ: рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдЫрд╛рдирдирд╛;
- рдЦреЛрдЬрдХ: () рд╡рд┐рдзрд┐ рдореЗрдВ рдЧреНрд▓реЛрдм рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕рдорд░реНрдерди;
- рдЦреЛрдЬрдХ: рдХреБрдЫ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдЧрддрд┐ рдмрдврд╝рд╛рдПрдВ;
- рдПрдЪрдЯреАрдЯреАрдкреА рдХрд░реНрдиреЗрд▓: рд╕рдВрд╕рд╛рдзрди рдЕрдВрд╢реЛрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдирдпрд╛ рдЙрдк-рдврд╛рдВрдЪрд╛;
- HttpKernel: рдШрд╛рддрдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдмреЗрд╣рддрд░ рдЙрддреНрдкрд╛рджрди;
- рдПрдЪрдЯреАрдЯреАрдкреА рдХрд░реНрдиреЗрд▓: рдЕрдкреНрд░рдЪрд▓рд┐рдд рдХреЙрд▓ рдХреА рд▓реЙрдЧрд┐рдВрдЧ;
- рдкреНрд░рдХреНрд░рд┐рдпрд╛: рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдордзреНрдпрд╡рд░реНрддреА рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛;
- рдкреНрд░рдХреНрд░рд┐рдпрд╛: рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛;
- рдкреНрд░рдХреНрд░рд┐рдпрд╛: рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛;
- рд░реВрдЯрд┐рдВрдЧ: рд░реВрдЯрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди URL рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди;
- рд░реВрдЯрд┐рдВрдЧ: рдпреЛрдЬрдирд╛ рдФрд░ рдкрде рдХреЗ рд▓рд┐рдП рд╕рд╛рдкреЗрдХреНрд╖ URL;
- рд╕реБрд░рдХреНрд╖рд╛: рджрд┐рд▓рдЪрд╕реНрдк рд╕реБрд░рдХреНрд╖рд╛ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ;
- рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛: рднреБрдЧрддрд╛рди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡реИрдз;
- рдлреНрд░реЗрдорд╡рд░реНрдХрдмрдВрдбрд▓: рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░;
- FrameworkBundle: рд╕реНрдереИрддрд┐рдХ рдкреГрд╖реНрдареЛрдВ рдХреЛ рдХреИрд╢рд┐рдВрдЧ рдХрд░рдирд╛ред
рд╕рд┐рдореНрдлрдиреА 2.2 рдореЗрдВ рднреА, рджреЛ рдШрдЯрдХреЛрдВ рдХреЛ рдореМрдЬреВрджрд╛ рдХреЛрдб рд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЧрдпрд╛ рдерд╛:
- PropertyAccess;
- рд╕реНрдЯреЙрдкрд╡реЙрдЪред
рдЖрдЧреЗ - рдХреБрдЫ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗред
рдШрдЯрдХреЛрдВ
PropertyAccess
рдкреНрд░реЙрдкрд░реНрдЯреА рдПрдЕрд░реНрд╕ рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рд╕рд╣рд┐рдд рд╕рдВрд░рдЪрдирд╛рдУрдВ (рд╕рд░рдгрд┐рдпреЛрдВ, рд╡рд╕реНрддреБрдУрдВ) рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдШрдЯрдХ рдХреЛрдб рдХреЛ рдлреЙрд░реНрдо рдШрдЯрдХ рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдШрдЯрдХ рдореЗрдВ рдирд┐рдХрд╛рд▓рд╛ рдЧрдпрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдЙрдкрдХрд░рдг рд╣реИ рдЬреЛ рд╕рд┐рдореНрдлрдиреА рдФрд░ рдЗрд╕реЗ рд╕реЗ рдЕрд▓рдЧ рджреЛрдиреЛрдВ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
getValue($objectOrArray, $propertyPath)
рд╡рд┐рдзрд┐
getValue($objectOrArray, $propertyPath)
рдХреЛ рдХрд┐рд╕реА
$propertyPath
рдпрд╛ рд╡рд╕реНрддреБ рд╕реЗ
$propertyPath
рдЕрдиреБрд╕рд╛рд░ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛
$propertyPath
:
use Symfony\Component\PropertyAccess\PropertyAccess;
рд╡рд╕реНрддреБрдУрдВ рддрдХ рдкрд╣реБрдБрдЪрддреЗ рд╕рдордп, рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рдореНрди рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдкрд╣рд▓реЗ рд╡рд┐рджреНрдпрдорд╛рди рдХрд╛ рдорд╛рди рдорд┐рд▓рддрд╛ рд╣реИ:
$item->getProp(); $item->isProp(); $item->hasProp(); $item->__get('prop'); $item->prop;
рд╡рд╣рд╛рдБ
setValue($objectOrArray, $propertyPath, $value)
, рдЬреЛ
$propertyPath
рдХрд╛ рдорд╛рди рд╕реЗрдЯ рдХрд░рддрд╛
$propertyPath
ред
рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЬрдм рдЪрд░ рдпрд╛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЗрди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ
рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рд╕реНрдЯреЙрдкрд╡реЙрдЪ рджреЗрдЦрдиреА
рдПрдХ рд╕реНрдЯреЙрдкрд╡реЙрдЪ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдПрдХ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб) рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕реЗ HttpKernel рд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЕрдм рд╡рд┐рдХрд╛рд╕ рдореЛрдб рдореЗрдВ рдПрдХ рд╕реЗрд╡рд╛ рдХрдВрдЯреЗрдирд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИред
рддреЛ рдпрд╣ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
if ($this->has('debug.stopwatch')) { $stopwatch = $this->get('debug.stopwatch'); } $stopwatch->start('foo');
рдорд╛рдкрд╛ рдЕрдВрддрд░рд╛рд▓ рд╕рд┐рдореНрдлрдиреА рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред
рдШрдЯрдХ рдкрд░рд┐рд╡рд░реНрддрди
рдлрд╝рд╛рдЗрд▓ рдЦреЛрдЬ (рдЦреЛрдЬрдХ)
рдЦреЛрдЬрдХ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рднреА рд╕реБрдзрд╛рд░ рд╣реБрдЖ рд╣реИ, рдЬреИрд╕реЗ рдорд╛рдкрджрдВрдб рдЕрдм рджреЗрд╢реА рд▓рд┐рдирдХреНрд╕, рдмреАрдПрд╕рдбреА рдФрд░ рдореИрдХрдУрдПрд╕ рдХрдорд╛рдВрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЧрдП рд╣реИрдВред
рд░реВрдЯрд┐рдВрдЧ (рд░реВрдЯрд┐рдВрдЧ)
URL рдЬрдирд░реЗрд╢рди
рд╕рдВрд╕реНрдХрд░рдг 2.2 рд╕реЗ рдкрд╣рд▓реЗ, рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ URL рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ред
рдкреВрд░реНрдг URL:
example.org/blog/what-a-wonderful-world
рдбреЛрдореЗрди URL (рдбрд┐рдлрд╝реЙрд▓реНрдЯ):
/blog/what-a-wonderful-world
рдЕрдм рдЖрдк рджреЛ рдФрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ URL рдЬрдирд░реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ URL:
//example.org/blog/what-a-wonderful-world
рдкрде рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ URL:
../
рдореЗрдЬрдмрд╛рди рдирд┐рд░реНрднрд░ рдорд╛рд░реНрдЧреЛрдВ
рдЕрдм рдЖрдк рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рд░реВрдЯ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
user_homepage: path: / host: "{user}.example.com" defaults: { _controller: AcmeDemoBundle:User:profile } main_homepage: path: / defaults: { _controller: AcmeDemoBundle:Main:homepage }
рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ
рдмрд╛рд╣рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
run()
рд╡рд┐рдзрд┐ рдХреЗ рдЕрд▓рд╛рд╡рд╛ (рдЬреЛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд▓рдВрдмреЛ рдлрд╝рдВрдХреНрд╢рди рд▓реЗрддрд╛ рд╣реИ),
start()
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛
start()
рдФрд░
getOutput()
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк getIncrementalOutput () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдирдП рдбреЗрдЯрд╛ рдХреЛ рдкрд┐рдЫрд▓реА рдХреЙрд▓ рд╕реЗ рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рджреЗрддрд╛ рд╣реИред
use Symfony\Component\Process\Process; $process = new Process('ls -lsa'); $process->run(function ($type, $data) { echo $data; });
рдЕрдм рдЖрдк рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
use Symfony\Component\Process\Process; $process = new Process('ls -lsa'); $process->start(); while ($process->isRunning()) { echo $process->getIncrementalOutput(); sleep(1); }
getErrorOutput()
рдФрд░
getIncrementalErrorOutput()
рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ред
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рд╕реВрдЪреА рдХрд╛ рднреА рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
$process->isSuccessful(); $process->hasBeenSignaled(); $process->hasBeenStopped(); $process->isRunning();
LTS
рдЕрдм рд╣рдо рд╕рд┐рдореНрдлрдиреА 2 рдХреЗ рдкрд╣рд▓реЗ рдПрд▓рдЯреАрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдордИ рдХреЗ рдЕрдВрдд рдореЗрдВ рд░рд┐рд▓реАрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕реЗ рджреЛ рд╕рд╛рд▓ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред