간단히 말해서, 그것은 마지막 것의 출력을 가져 와서 다음을 파이프합니다. Bash cat ./file | grep -e 'waldo'
작곡가를 통해 패키지를 설치할 수 있습니다.
composer require inmanturbo/pipes 또는이 저장소에서 functions.php 파일을 복사하거나 다운로드하십시오.
require __DIR__ . ' /../vendor/autoload.php ' ;
use function Inmanturbo Pipes pipe ;
$ addOne = fn ( $ number = 0 ) => $ number + 1 ;
$ five = pipe ( $ addOne ) // 1
-> pipe ( fn ( $ number ) => $ number + 1 ) // 2
-> pipe ( $ addOne ) // 3
-> pipe ( $ addOne ) // 4
-> thenReturn (); // 4실행을 지연시키지 않습니다
$ fifty = pipe ( 1 );
while ( $ fifty -> result () < 50 ) {
$ fifty -> pipe ( fn ( $ number ) => ++ $ number );
}
echo $ fifty -> result ();
// 50
클래스 또는 클래스 문자열을 통과 할 수도 있습니다.
use function Inmanturbo Pipes pipe ;
class Subtract
{
public function __invoke ( $ number )
{
return $ number - 1 ;
}
}
$ addOne = fn ( $ number = 0 ) => $ number + 1 ;
$ six = pipe ( $ addOne , 1 )
-> pipe ( $ addOne )
-> pipe ( $ addOne )
-> pipe ( $ addOne )
-> then ( fn ( $ number ) => ++ $ number );
$ five = pipe ( $ six )
-> pipe (Subtract::class)
-> thenReturn ();
$ three = pipe ( new Subtract , $ five )
-> pipe ( new Subtract )
-> thenReturn ();결과는 세 가지 방법으로 반환 할 수 있습니다.
then() 또는 thenReturn() 은 최종 콜백을 가져 와서 결과 result() 를 반환하거나 결과를 반환합니다.
$ addOne = fn ( $ number = 0 ) => $ number + 1 ;
$ six = pipe ( $ addOne , 1 )
-> pipe ( $ addOne )
-> pipe ( $ addOne )
-> pipe ( $ addOne )
-> then ( fn ( $ number ) => ++ $ number );
$ sixAgain = pipe ( $ addOne , 1 )
-> pipe ( $ addOne )
-> pipe ( $ addOne )
-> pipe ( $ addOne )
-> thenReturn ( fn ( $ number ) => ++ $ number );
$ five = pipe ( $ addOne , 1 )
-> pipe ( $ addOne )
-> pipe ( $ addOne )
-> pipe ( $ addOne )
-> result (); 콜백에서 halt() 반환하여 체인을 중단 할 수 있습니다. halt 체인의 최종 result() 로 전달할 수있는 인수로 선택적 결과를 취합니다. ->pipe() 에 대한 후속 호출은 최종 결과에 영향을 미치지 않습니다.
use function Inmanturbo Pipes { pipe , halt };
$ fortyFive = pipe ( 1 );
$ count = 1 ;
while ( $ count < 50 ) {
$ fortyFive -> pipe ( fn ( $ number ) => $ number < 45 ? ++ $ number : halt ( $ number ));
$ count ++;
}
echo $ fortyFive -> result ();
// 45
echo $ fortyFive -> pipe ( fn ( $ number ) => ++ $ number )-> result ();
// 45파이프 자체에서 Halt를 호출 할 수도 있습니다
use function Inmanturbo Pipes { pipe , halt };
$ fortyFive = pipe ( 1 );
$ count = 1 ;
while ( $ count < 50 ) {
if (( $ number = $ fortyFive -> result ()) >= 45 ) {
$ fortyFive -> halt ( $ number );
}
$ fortyFive -> pipe ( fn ( $ number ) => ++ $ number );
$ count ++;
}
echo $ fortyFive -> result ();
// 45
echo $ fortyFive -> pipe ( fn ( $ number ) => ++ $ number )-> result ();
// 45 이력서로 배관을 재개 할 수 있습니다. pipe()->resume() 콜백이 전달되면 pipe()->pipe() 와 동일하게 동작합니다.
use function Inmanturbo Pipes { pipe , halt };
$ fortySix = pipe ( 1 );
$ count = 1 ;
while ( $ count < 50 ) {
if (( $ number = $ fortySix -> result ()) >= 45 ) {
$ fortySix -> halt ( $ number );
}
$ fortySix -> pipe ( fn ( $ number ) => ++ $ number );
$ count ++;
}
echo $ fortySix -> result ();
// 45
echo $ fortySix -> resume ( fn ( $ number ) => ++ $ number )-> result ();
// 46 이 패키지는 Laravel이 파이프 또는 hop() 사용하도록 요구하지 않지만 hop() (고차 파이프)는 Laravel의 파이프 라인 도우미를 사용하기위한 고차 기능입니다. 이 고차 장애는 단일 인수를 취하는 콜백을 취하고 function($next, $passable) 구현하는 클로저에서 $callback 랩합니다.
use Illuminate Pipeline Pipeline ;
use function Inmanturbo Pipes hop ;
class Add {
public function add ( $ number )
{
return $ number + 1 ;
}
}
class InvokeAdd {
public function __invoke ( $ number )
{
return $ number + 1 ;
}
}
$ five = ( new Pipeline )-> send ( 1 )
-> pipe ( hop ( fn ( $ number ) => $ number + 1 ))
-> pipe ( hop ( new InvokeAdd ))
-> pipe ( hop (InvokeAdd::class))
-> pipe ( hop ( fn ( $ number ) => ( new Add )-> add ( $ number )))
-> thenReturn ();
// 5 선택적으로 단일 middleware hop() 에 대한 두 번째 인수로 전달할 수 있으며 첫 번째 인수 이전에 호출되므로 $callback 실행되기 전에 파이프 라인이 중단되어야하는지 확인할 수 있습니다.
$ limitThreeMiddleware = function ( $ number , $ next ) {
if ( $ number >= 3 ) {
Log:: info ( ' Limit hit ' );
return $ number ;
}
return $ next ( $ number );
};
$ five = ( new Pipeline )-> send ( 1 )
-> pipe ( hop ( fn ( $ number ) => $ number + 1 , $ limitThreeMiddleware ))
-> pipe ( hop ( new InvokeAdd , $ limitThreeMiddleware ))
// Limit hit
-> pipe ( hop (InvokeAdd::class, $ limitThreeMiddleware ))
-> pipe ( hop ( fn ( $ number ) => ( new Add )-> add ( $ number ), $ limitThreeMiddleware ))
-> thenReturn ();
// 3