PHP 개발자가 되는 것은 신나는 시기입니다. Github에서는 쉽게 찾아 사용할 수 있는 유용한 라이브러리가 매일 배포됩니다. 다음은 제가 만난 가장 멋진 라이브러리 중 24개입니다. 당신이 가장 좋아하는 도서관이 이 목록에 없나요? 그럼 댓글로 공유해주세요!
1. Dispatch – 마이크로 프레임워크
Dispatch는 작은 PHP 프레임워크입니다. 완전한 MVC 설정을 제공하지는 않지만 URL 규칙과 메서드를 정의하여 애플리케이션을 더 잘 구성할 수 있습니다. 이는 API, 간단한 사이트 또는 프로토타입에 적합합니다.
345 6
8 9
|
//라이브러리 포함 포함 'dispatch.php' ; // 경로 정의 get( <code>'/인사' ,
함수 () {
//렌더 뷰 render( 'greet-form' ); }) ; //사후 처리 post( '/greet' ,
함수 () { $name = from( $_POST ,
'name' );
// 일부 로컬을 전달하는 동안 뷰 렌더링 code> render( 'greet-show' ,
배열 ( '이름' => $name ));}); // 사이트 제공 dispatch(); |
1 23 |
응답( '/[:name]' ,
함수 ( $request ) { echo '안녕하세요' . $request ->name; });
|
12 34567891011121314 |
응답( 'GET' ,
'/posts' , $callback ); 응답( 'POST' ,
'/posts/create' , $callback ); 응답('PUT' ,
'/posts/[i:id]' , $callback ); 응답( 'DELETE' ,
'/posts/[i:id]' , $callback ); //여러 요청 방법 일치: respond( array ( 'POST', 'GET' ),
$route , $callback ); // 같은 장소에서 요청을 처리할 수도 있습니다. respond( '/posts/[create|edit:action] /[i:id] ' ,
함수 ( $request ,
$response ) { 전환 ( $request ->action) { // 뭔가를 하세요 } });
|
6
|
require '../ham/ham.php ' ; $app = 새 햄(<code>'예제' ); $app ->config_from_file( 'settings.php'); $app ->route( '/돼지' ,
함수 ( $app ) { return "맛있는 돼지고기." ; }); $hello = 함수 ( $app ,
$name = '세계' ) { <code>반환 $app ->render( 'hello.html' ,
배열 ( '이름' => ,
$hello ); $app ->run();
|
12 34567891011 |
사용 AsseticAssetAssetCollection; 사용AsseticAssetFileAsset; 사용 AsseticAssetGlobAsset; $js = 새 AssetCollection( 배열 ( 새 GlobAsset( '/path/to/js/*' ), 새 FileAsset( '/path/to/another.js' ), )); //리소스가 출력되면 코드가 병합됩니다 echo $js ->dump();
|
이런 방식으로 리소스를 결합하면 사이트 속도가 빨라지므로 좋은 생각입니다. 전체 다운로드 양이 줄어들 뿐만 아니라 불필요한 HTTP 요청도 많이 제거됩니다(페이지 로드 시간에 가장 큰 영향을 미치는 두 가지 요소)
ImageWorkshop – 레이어를 사용한 이미지 처리
ImageWorkshop은 계층화된 이미지를 조작할 수 있는 오픈 소스 라이브러리입니다. 이를 사용하면 크기 조정, 자르기, 썸네일 생성, 워터마크 생성 등의 작업을 수행할 수 있습니다. 예는 다음과 같습니다.
6
8 9 10 11 |
// norway.jpg 이미지에서 노르웨이 레이어 초기화 $norwayLayer = ImageWorkshop::initFromPath( '/path/to/images/norway.jpg' );
//watermark.png 이미지에서 워터마크 레이어(워터마크 레이어) 초기화 $watermarkLayer = ImageWorkshop::initFromPath( '/path/to/images/watermark.png' );
$image = $norwayLayer ->getResult();
// 생성된 이미지입니다! header( 'Content-type: image/jpeg' ); imagejpeg( $image , null, 95);
// 95% 품질의 JPG를 표시하도록 선택했습니다. exit ; |
1 2345678910111213 |
require_once '/path/to/snappy/src/autoload.php' ;
use KnpSnappyPdf; //wkhtmltopdf 바이너리 경로를 통해 라이브러리 초기화 $snappy = new Pdf( '/usr/local/bin /wkhtmltopdf ' );
//Content-type 헤더를 pdf로 설정하여 브라우저에 pdf를 표시합니다. header( '콘텐츠 유형: 애플리케이션/pdf' ); 헤더( '콘텐츠 처리: 첨부; 파일 이름= "file.pdf"' );
echo $snappy ->getOutput( 'http://www.github .com' );
|
1234567 89101112131415 161718 |
$user = ORM::for_table( '사용자' ) ->where_equal( code>
|
Idiorm에는 Paris라는 자매 라이브러리가 있는데, 이는 Idiorm을 기반으로 한 Active Record 구현입니다.
8. Underscore – PHP용 도구 벨트
Underscore는 Javascript 애플리케이션용 도구 벨트인 원래 Underscore.js에 대한 인터페이스입니다. PHP 버전은 실망하지 않으며 거의 모든 기본 기능을 지원합니다. 다음은 몇 가지 예입니다.
6
8 9 10 11
|
__: :각( 배열 (1, 2, 3),
함수 ( $num ) {
에코 $num . ',' });
// 1,2,3, $multiplier = 2; __::각( 배열 (1, 2, 3),
함수 ( $num ,
$index ) 사용 ( $multiplier ) { 에코 $index '='<code>.( $num * $multiplier ) .
',' ; }); // 인쇄 : 0=2,1=4,2=6, __::reduce( 배열 (1, 2 , 3),
함수 ( $memo ,
$num ) { return $memo + $번호 }, 0);
// 6 __::find( 배열 (1, 2, 3, 4),
함수 ( $num ) {
return $num % 2 === 0 }) // 2 __::filter( 배열 (1, 2, 3, 4),
함수 ( $num ) {
return $num % 2 === 0 }) // array(2, 4)
|
123456789101112 |
$headers = 배열 ( '수락' => 'application/json' ); $options = 배열 ( '인증' => 배열 ( '사용자' ,
'pass' )); $request = 요청::get( 코드><code>'https://api.github.com/gists' ,
$headers , $options ); var_dump( $request ->status_code); // int(200) var_dump( $request ->headers[ 'content-type' ]);
|
12345678 |
$request = new BuzzMessageRequest( 'HEAD' ,
'/' , 'http://google.com' ); $response = new BuzzMessageResponse(); $client = 새 BuzzClientFileGetContents(); $client - >send( $요청 ,
$response ); echo $request ;<code>에코 $response ;
|
34 5
|
require_once '/path/to/goutte.phar' 사용 GoutteClient $client = new 클라이언트(); 코드> 코드><code>$crawler = $client ->request( ' GET' ,
'http://www.symfony-project.org/' );
//링크 클릭 $link = $crawler ->selectLink( '플러그인' )->link(); $ 크롤러 = $client ->click( $link );
//CSS와 유사한 구문을 사용하여 데이터 추출 $t = $crawler->filter( '#data' )->text();
echo "텍스트는 다음과 같습니다: $t" ; code> td> |
12 34567891011121314151617181920212223 2425 |
printf( "지금은 %s입니다." , Carbon::now()->toDateTimeString()); printf( "지금 밴쿠버는 %s입니다." , Carbon::now( '아메리카/밴쿠버' )); $tomorrow = Carbon::now()->addDay(); $lastWeek = Carbon::now()->subWeek (); $nextSummerOlympics = Carbon::createFromDate(2012)->addYears(4); $officialDate = Carbon::now()->toRFC2822String(); $howOldAmI = Carbon::createFromDate(1975, 5, 21)->age; $noonTodayLondonTime = Carbon::createFromTime(12, 0, 0, '유럽/런던' ); $endOfWorld = Carbon::createFromDate(2012 , 12, 21, 'GMT' ); //항상 UTC와 비교 if (Carbon::now()->gte( $endOfWorld )) { 죽음 (); } if (Carbon::now()->isWeekend()) { echo code>'파티!' ; } 에코 Carbon::now()->subMinutes(2)->diffForHumans() // '2분 전'
|
13. Ubench – 마이크로 벤치마크 라이브러리
Ubench는 PHP 코드 평가, (코드) 실행 시간 및 메모리 사용량 모니터링을 위한 마이크로 라이브러리입니다. 예는 다음과 같습니다.
6
8 9 10 11
|
사용 UbenchUbench; $bench = 새로운 Ubench;$bench ->start(); //일부 실행 코드 $bench -> end (); //실행 시간 및 메모리 가져오기 echo $bench ->getTime() ; // 156ms 또는 1.123s echo $bench ->getTime(true ); // 경과된 마이크로타임(float) echo $bench ->getTime( 거짓, '%d%s' );
// 156ms 또는 1s echo $bench ->getMemoryPeak() $bench ->getMemoryUsage() // 152B 또는 90.00Kb 또는 15.23Mb
|
12 34567891011121314151617181920 |
사용 RespectValidationValidator as v //간단한 확인 $number = 123; v::numeric()->validate( $number );
//true //체인 확인 $usernameValidator = v::alnum()->noWhitespace()->length(1,15); $usernameValidator ->validate(
|
12345 |
$f = 필터::factory( 'string,max:5' ); $str = '테스트 문자열입니다.' ;
$f ->validate( $str );
// false $f ->filter( $str );
// '이것'
|
Filterus에는 다양한 내장 모드가 있고 체인 사용을 지원하며 독립적인 유효성 검사 규칙을 사용하여 배열 요소의 유효성을 검사할 수도 있습니다.
16. Faker - 가짜 데이터 생성기
Faker는 가짜 데이터를 생성하는 PHP 라이브러리입니다. 이는 테스트 데이터베이스를 채우거나 웹 애플리케이션에 대한 테스트 데이터를 생성해야 할 때 유용합니다. 사용하기도 매우 쉽습니다.
6
8 9 10 11
|
//Reference Faker 오토로더 require_once '/path/to/Faker/src / autoload.php' ; //팩토리 생성을 사용하여 FakerGenerator 인스턴스 생성 $ faker = FakerFactory::create(); //속성에 접근하여 가짜 데이터 생성 echo $faker ->name; // '루시 체흐텔라'; echo <code>$faker ->address; // "426 Jordy Lodge // Cartwrightshire, SC 88120-6700" echo $faker
|
12 |
$m = new Mustache_Engine; 에코 $m ->render( '안녕하세요 {{행성}}' ,
배열 ( '행성' => '세계!' ));
// "Hello World!"
|
12 34567891011121314151617 |
사용 GaufretteFilesystem; 사용 GaufretteAdapterFtp as FtpAdapter; 사용 GaufretteAdapterLocal as LocalAdapter; //로컬 파일: $adapter = 새 LocalAdapter( '/var/media' );
//선택적으로 FTP 어댑터 사용 // $ftp = new FtpAdapter($path, $host, $ 사용자 이름, $password, $port);
//파일 시스템 초기화 $filesystem = new<code>파일 시스템( $adapter );
//사용 $content = $filesystem '안녕하세요 저는 새로운 콘텐츠입니다' ; $filesystem -> ;쓰기( '내파일' ,
$content );
|
캐시 및 메모리 어댑터도 있으며 추후 더 추가될 예정입니다.
19. Omnipay – 결제 처리 라이브러리
Omnipay는 PHP 결제 처리 라이브러리입니다. 명확하고 일관된 API를 갖추고 있으며 수십 개의 게이트웨이를 지원합니다. 이 라이브러리를 사용하면 API를 배우고 다양한 결제 프로세서를 처리하기만 하면 됩니다. 예는 다음과 같습니다.
6
|
사용 OmnipayCreditCard; 사용 OmnipayGatewayFactory; $gateway = GatewayFactory::create ( '스트라이프' ); $gateway ->setApiKey( 'abc123' ); $formData = [ '번호' => '4111111111111111' ,
'만료월' =>
'expiryYear' => 2016]; $response = $gateway ->purchase([ '금액' => 1000, '카드' => $formData ]); if ( $response ->isSuccessful()) {
//결제 성공: 데이터베이스 업데이트 print_r( $response ); } elseif ( $response ->isRedirect()) {
//원격 결제 게이트웨이로 이동 $response ->redirect();<code>} else { //결제 실패: 고객에게 정보 표시 exit ( code><code>종료 코드><code>$response ->getMessage()); }
|
12 34567891011121314151617181920 |
$storage = 새 UploadStorageFileSystem( '/path/to/directory' ); $file = new UploadFile( 'foo' ,
$storage ); //파일 업로드 확인 $ 파일 ->addValidations( 배열 (
/ /파일 형식이 "image/png"인지 확인하세요 new UploadValidationMimetype( ' image/ png' ),
//파일이 5M를 초과하지 않는지 확인하세요("B", " K", "M " 또는 "G") new UploadValidationSize( '5M ' ) )); //파일 업로드 시도 중 시도 { //성공 $file ->upload(); } catch code>(예외 $e ) { //실패했습니다!<code> $errors = $file ->getErrors( ); }
|
지루한 코드가 많이 줄어듭니다.
21. HTMLPurifier – HTML XSS 보호
HTMLPurifier는 강력한 화이트리스트 및 집계 분석을 통해 XSS 공격으로부터 코드를 보호하는 HTML 필터링 라이브러리입니다. 또한 출력 마크업이 표준을 준수하는지 확인합니다. (소스코드는 github에 있습니다)
|
require_once '/path/to/HTMLPurifier.auto.php' ; $config = HTMLPurifier_Config::createDefault () ;
$purifier = new HTMLPurifier( $config );
$clean_html = $purifier -> ;purify( $dirty_html );
|
1 2 3 4 5 6 7 8 |
|
1234 567 |
사용 MischiefCollectiveColorJizzFormatsHex; $red_hex = 새 Hex(0xFF0000); 코드>$red_cmyk = $hex ->toCMYK(); 에코 $red_cmyk // 0,1,1,0 echo Hex::fromString( 'red' )->hue(-20)->greyscale();
// 555555
|
12 345678 |
위치정보 데이터를 사용하는 앱에서 잘 작동합니다. HTML5 위치 API, Yahoo API(또는 날씨 웹 앱 튜토리얼에서 했던 것처럼 둘 다)를 번역하여 좌표를 얻을 수 있습니다.
24. ShellWrap – 아름다운 명령줄 래퍼
ShellWrap 라이브러리를 사용하면 PHP 코드에서 강력한 Linux/Unix 명령줄 도구를 사용할 수 있습니다.
34567891011121314151617181920212223 24252627 |
필수 ' ShellWrap.php' ; 사용 MrRioShellWrap as sh ; //현재 파일 아래의 모든 파일 나열 echo sh::ls( ) ; //git 브랜치 확인 sh::git( 'checkout' ,
'master' ) //한 명령의 출력을 다른 명령으로 파이프할 수도 있습니다 code>//다음은 컬을 사용하여 위치를 추적한 다음 grep을 통해 'html' 파이프라인을 필터링하여 example.com 웹사이트를 다운로드합니다 echosh::grep( 'html' , sh::curl( 'http:// example.com' code><code>,
배열 ( '위치' => true ))) //새 파일 만들기 sh : :touch( 'file.html' );
//파일 제거 sh::rm( 'file.html' code >);
//파일을 다시 제거합니다(이번에는 실패했고 파일이 존재하지 않아 예외가 발생했습니다) 시도<code>{ sh::rm( 'file.html' ); } catch (예외 $e ) { echo 'sh::rm() 호출 실패 포착' ;<code>}
|