рд╕рд┐рдореНрдлрдиреА 2.2 рдЬрд╛рд░реА рдХрд┐рдпрд╛

рд╕рд┐рдореНрдлрдиреА 2.2 рдЖрдЬ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдмреНрд▓реЙрдЧ рд╕реЗ рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдХреА рд╕реВрдЪреА:


рд╕рд┐рдореНрдлрдиреА 2.2 рдореЗрдВ рднреА, рджреЛ рдШрдЯрдХреЛрдВ рдХреЛ рдореМрдЬреВрджрд╛ рдХреЛрдб рд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЧрдпрд╛ рдерд╛:

рдЖрдЧреЗ - рдХреБрдЫ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗред

рдШрдЯрдХреЛрдВ


PropertyAccess

рдкреНрд░реЙрдкрд░реНрдЯреА рдПрдЕрд░реНрд╕ рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рд╕рд╣рд┐рдд рд╕рдВрд░рдЪрдирд╛рдУрдВ (рд╕рд░рдгрд┐рдпреЛрдВ, рд╡рд╕реНрддреБрдУрдВ) рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдШрдЯрдХ рдХреЛрдб рдХреЛ рдлреЙрд░реНрдо рдШрдЯрдХ рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдШрдЯрдХ рдореЗрдВ рдирд┐рдХрд╛рд▓рд╛ рдЧрдпрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдЙрдкрдХрд░рдг рд╣реИ рдЬреЛ рд╕рд┐рдореНрдлрдиреА рдФрд░ рдЗрд╕реЗ рд╕реЗ рдЕрд▓рдЧ рджреЛрдиреЛрдВ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

getValue($objectOrArray, $propertyPath) рд╡рд┐рдзрд┐ getValue($objectOrArray, $propertyPath) рдХреЛ рдХрд┐рд╕реА $propertyPath рдпрд╛ рд╡рд╕реНрддреБ рд╕реЗ $propertyPath рдЕрдиреБрд╕рд╛рд░ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ $propertyPath :
 use Symfony\Component\PropertyAccess\PropertyAccess; // ... $row = array(); $accessor = PropertyAccess::getPropertyAccessor(); // $row[] = $item[firstName]; $row[] = $accessor->getValue($item, '[firstName]'); // $row[] = $item->getFirstName() $row[] = $accessor->getValue($item, 'firstName'); // $row[] = $item[user][firstName]; $row[] = $accessor->getValue($item, '[user][firstName]'); // $row[] = $item->getUser()->getFirstName() $row[] = $accessor->getValue($item, 'user.firstName'); 

рд╡рд╕реНрддреБрдУрдВ рддрдХ рдкрд╣реБрдБрдЪрддреЗ рд╕рдордп, рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рдореНрди рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдкрд╣рд▓реЗ рд╡рд┐рджреНрдпрдорд╛рди рдХрд╛ рдорд╛рди рдорд┐рд▓рддрд╛ рд╣реИ:
 $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'); // ... $stopwatch->lap('foo'); // ... $stopwatch->lap('foo'); // ... $event = $stopwatch->stop('foo'); 

рдорд╛рдкрд╛ рдЕрдВрддрд░рд╛рд▓ рд╕рд┐рдореНрдлрдиреА рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред

рдШрдЯрдХ рдкрд░рд┐рд╡рд░реНрддрди


рдлрд╝рд╛рдЗрд▓ рдЦреЛрдЬ (рдЦреЛрдЬрдХ)

 //   2.2       glob  regexp Finder::create()->files()->name('*.php'); Finder::create()->files()->name('/\.php$/'); //       Finder::create()->path('some/special/dir'); Finder::create()->path('/^foo\/bar/'); //  glob    in() Finder::create()->files()->in('src/Symfony/*/*/Resources/translations'); 

рдЦреЛрдЬрдХ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рднреА рд╕реБрдзрд╛рд░ рд╣реБрдЖ рд╣реИ, рдЬреИрд╕реЗ рдорд╛рдкрджрдВрдб рдЕрдм рджреЗрд╢реА рд▓рд┐рдирдХреНрд╕, рдмреАрдПрд╕рдбреА рдФрд░ рдореИрдХрдУрдПрд╕ рдХрдорд╛рдВрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЧрдП рд╣реИрдВред

рд░реВрдЯрд┐рдВрдЧ (рд░реВрдЯрд┐рдВрдЧ)

URL рдЬрдирд░реЗрд╢рди

рд╕рдВрд╕реНрдХрд░рдг 2.2 рд╕реЗ рдкрд╣рд▓реЗ, рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ URL рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ред

рдкреВрд░реНрдг URL: example.org/blog/what-a-wonderful-world
 // Twig {{ url('blog', { post: 'what-a-wonderful-world' }) }} // PHP $generator->generate('blog', array('post' => 'what-a-wonderful-world'), true); $generator->generate('blog', array('post' => 'what-a-wonderful-world'), UrlGeneratorInterface::ABSOLUTE_URL); 

рдбреЛрдореЗрди URL (рдбрд┐рдлрд╝реЙрд▓реНрдЯ): /blog/what-a-wonderful-world
 // Twig {{ path('blog', { post: 'what-a-wonderful-world' }) }} // PHP $generator->generate('blog', array('post' => 'what-a-wonderful-world')); $generator->generate('blog', array('post' => 'what-a-wonderful-world'), UrlGeneratorInterface::ABSOLUTE_PATH); 

рдЕрдм рдЖрдк рджреЛ рдФрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ URL рдЬрдирд░реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ URL: //example.org/blog/what-a-wonderful-world
 // Twig {{ url('blog', { post: 'what-a-wonderful-world' }, true) }} // PHP $generator->generate('blog', array('post' => 'what-a-wonderful-world'), UrlGeneratorInterface::NETWORK_PATH); 

рдкрде рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ URL: ../
 // Twig {{ path('blog', { post: 'what-a-wonderful-world' }, true) }} // PHP $generator->generate('blog', array('post' => 'what-a-wonderful-world'), UrlGeneratorInterface::RELATIVE_PATH); 

рдореЗрдЬрдмрд╛рди рдирд┐рд░реНрднрд░ рдорд╛рд░реНрдЧреЛрдВ

рдЕрдм рдЖрдк рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рд░реВрдЯ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 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(); //   2.2 $process->isStarted(); $process->isTerminated(); 


LTS


рдЕрдм рд╣рдо рд╕рд┐рдореНрдлрдиреА 2 рдХреЗ рдкрд╣рд▓реЗ рдПрд▓рдЯреАрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдордИ рдХреЗ рдЕрдВрдд рдореЗрдВ рд░рд┐рд▓реАрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕реЗ рджреЛ рд╕рд╛рд▓ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

Source: https://habr.com/ru/post/In171243/


All Articles