>  기사  >  백엔드 개발  >  PHP 개발자가 알아야 할 24가지 라이브러리

PHP 개발자가 알아야 할 24가지 라이브러리

WBOY
WBOY원래의
2016-08-08 09:26:20914검색

PHP 개발자가 되는 것은 신나는 시기입니다. Github에서는 쉽게 찾아 사용할 수 있는 유용한 라이브러리가 매일 배포됩니다. 다음은 제가 만난 가장 멋진 라이브러리 중 24개입니다. 당신이 가장 좋아하는 도서관이 이 목록에 없나요? 그럼 댓글로 공유해주세요!

1. Dispatch – 마이크로 프레임워크

Dispatch는 작은 PHP 프레임워크입니다. 완전한 MVC 설정을 제공하지는 않지만 URL 규칙과 메서드를 정의하여 애플리케이션을 더 잘 구성할 수 있습니다. 이는 API, 간단한 사이트 또는 프로토타입에 적합합니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

//包含库

include'dispatch.php';

// 定义你的路由

get('/greet', function() {

//渲染视图

    render('greet-form');

});

//post处理

post('/greet', function() {

    $name= from($_POST, 'name');

// render a view while passing some locals

    render('greet-show', array('name'=> $name));

});

// serve your site

dispatch();

12

3

4

5

6

1

2

3

respond('/[:name]', function($request) {

    echo'Hello '. $request->name;

});

7

8

9

1

2

3

4

5

6

7

8

9

10

11

12

13

14

respond('GET', '/posts', $callback);

respond('POST', '/posts/create', $callback);

respond('PUT', '/posts/[i:id]', $callback);

respond('DELETE', '/posts/[i:id]', $callback);

//匹配多种请求方法:

respond(array('POST','GET'), $route, $callback);

//你或许也想在相同的地方处理请求

respond('/posts/[create|edit:action] /[i:id] ', function($request, $response) {

    switch($request->action) {

        // do something

    }

});

101112131415161718
//라이브러리 포함포함 'dispatch.php';// 경로 정의get( <code>'/인사', 함수() {//렌더 뷰 render('greet-form');}) ;//사후 처리post('/greet', 함수() { $name= from( $_POST, 'name');// 일부 로컬을 전달하는 동안 뷰 렌더링 code> render('greet-show', 배열('이름'=> $name));});// 사이트 제공dispatch();
특정 유형의 HTTP 요청을 일치시킬 수 있으며 경로, 렌더 뷰 등 다양한 작업을 수행하세요. Dispatch를 다른 프레임워크와 결합하면 매우 강력하고 가벼운 프로그램을 만들 수 있습니다! 2. Klein – PHP를 위한 초고속 라우팅 Klein은 PHP5.3+용 또 다른 경량 라우팅 라이브러리입니다. Dispatch보다 구문이 약간 더 장황하지만 속도가 상당히 빠릅니다. 예는 다음과 같습니다.
1 23 응답('/[:name]' , 함수($request) { echo'안녕하세요'.$request->name;});
맞춤 설정할 수도 있습니다. HTTP 메소드를 지정하고 경로에 정규식을 사용하십시오. 티바디>테이블>

작은 프로젝트에는 좋지만 대규모 애플리케이션에 이와 같은 라이브러리를 사용하는 경우 코드가 빠르게 변경될 수 있으므로 유지 관리가 불가능하므로 규칙을 따라야 합니다. 따라서 Laravel 또는 CodeIgniter와 같은 완전히 성숙한 프레임워크를 사용하는 것이 좋습니다.

3. Ham – 캐시가 포함된 라우팅 라이브러리

Ham도 경량 라우팅 프레임워크이지만 더 빠른 속도를 달성하기 위해 캐싱을 사용합니다. XCache/APC와 관련된 모든 I/O를 캐싱하여 이를 수행합니다. 예는 다음과 같습니다.

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) {   // 뭔가를 하세요 }});

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

require'../ham/ham.php';

$app= newHam('example');

$app->config_from_file('settings.php');

$app->route('/pork', function($app) {

    return"Delicious pork.";

});

$hello= function($app, $name='world') {

    return$app->render('hello.html', array(

        'name'=> $name

    ));

};

$app->route('/hello/<string>', $hello);

$app->route('/', $hello);

$app->run();

12

3

4

5

6

1

2

3

4

5

6

7

8

9

10

11

useAsseticAssetAssetCollection;

useAsseticAssetFileAsset;

useAsseticAssetGlobAsset;

$js= newAssetCollection(array(

    newGlobAsset('/path/to/js/*'),

    newFileAsset('/path/to/another.js'),

));

//当资源被输出时,代码会被合并

echo$js->dump();

78 910111213141516 1718
require'../ham/ham.php ';$app= 햄(<code>'예제');$app->config_from_file('settings.php');$app->route( '/돼지', 함수($app) { return"맛있는 돼지고기.";});$hello= 함수($app, $name='세계') { <code>반환$app->render('hello.html', 배열( '이름'=> $name ));}; $app->route('/hello/<string>', $hello);$app->route('/', $hello);$app->run();
이 라이브러리를 사용하려면 XCache와 APC 중 하나 이상이 설치되어 있어야 합니다. , 대부분의 호스팅 제공업체에서는 작동하지 않을 수 있습니다. 그러나 그 중 하나가 설치된 호스트가 있거나 웹 서버를 제어할 수 있는 경우 이 가장 빠른 프레임워크를 사용해 보아야 합니다. 4. Assetic - 리소스 관리 Assetic은 CSS/JS 리소스를 병합하고 줄이기 위한 PHP 리소스 관리 프레임워크입니다. 아래는 예시입니다.
12 34567891011 사용AsseticAssetAssetCollection;사용AsseticAssetFileAsset;사용AsseticAssetGlobAsset;$js = AssetCollection(배열( GlobAsset('/path/to/js/*'), FileAsset('/path/to/another.js'),));//리소스가 출력되면 코드가 병합됩니다echo$js->dump();

이런 방식으로 리소스를 결합하면 사이트 속도가 빨라지므로 좋은 생각입니다. 전체 다운로드 양이 줄어들 뿐만 아니라 불필요한 HTTP 요청도 많이 제거됩니다(페이지 로드 시간에 가장 큰 영향을 미치는 두 가지 요소)

ImageWorkshop – 레이어를 사용한 이미지 처리

ImageWorkshop은 계층화된 이미지를 조작할 수 있는 오픈 소스 라이브러리입니다. 이를 사용하면 크기 조정, 자르기, 썸네일 생성, 워터마크 생성 등의 작업을 수행할 수 있습니다. 예는 다음과 같습니다.

1

2

3

4

5

6

7

8

9

10

11

// 从norway.jpg图片初始化norway层

$norwayLayer= ImageWorkshop::initFromPath('/path/to/images/norway.jpg');

// 从watermark.png图片初始化watermark层(水印层)

$watermarkLayer= ImageWorkshop::initFromPath('/path/to/images/watermark.png');

$image= $norwayLayer->getResult(); // 这是生成的图片!

header('Content-type: image/jpeg');

imagejpeg($image, null, 95); // We choose to show a JPG with a quality of 95%

exit;

12

3

4

5

6

1

2

3

4

5

6

7

8

9

10

11

12

13

require_once'/path/to/snappy/src/autoload.php';

useKnpSnappyPdf;

//通过wkhtmltopdf binary路径初始化库

$snappy= newPdf('/usr/local/bin/wkhtmltopdf');

//通过把Content-type头设置为pdf来在浏览器中展示pdf

header('Content-Type: application/pdf');

header('Content-Disposition: attachment; filename="file.pdf"');

echo$snappy->getOutput('http://www.github.com');

7

8

9

10

11

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

$user= ORM::for_table('user')

    ->where_equal('username', 'j4mie')

    ->find_one();

$user->first_name = 'Jamie';

$user->save();

$tweets= ORM::for_table('tweet')

    ->select('tweet.*')

    ->join('user', array(

        'user.id', '=', 'tweet.user_id'

    ))

    ->where_equal('user.username', 'j4mie')

    ->find_many();

foreach($tweetsas$tweet) {

    echo$tweet->text;

}

// 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;
ImageWorkshop은 필요한 경우 PHP에서 이미지 작업을 수행하는 가장 일반적인 사례를 단순화하기 위해 개발되었습니다. 더 강력한 기능을 원하시면 Imagine 라이브러리를 확인해 보세요! 6. Snappy - 스냅샷/PDF 라이브러리 Snappy는 스냅샷, URL, HTML 및 PDF를 생성할 수 있는 PHP5 라이브러리입니다. 이는 wkhtmltopdf 바이너리(Linux, Windows 및 OSX에서 사용 가능)에 의존합니다. 다음과 같이 사용할 수 있습니다:
1 2345678910111213 require_once'/path/to/snappy/src/autoload.php'; useKnpSnappyPdf; //wkhtmltopdf 바이너리 경로를 통해 라이브러리 초기화 $snappy= newPdf('/usr/local/bin /wkhtmltopdf '); //Content-type 헤더를 pdf로 설정하여 브라우저에 pdf를 표시합니다.header( '콘텐츠 유형: 애플리케이션/pdf');헤더('콘텐츠 처리: 첨부; 파일 이름= "file.pdf"'); echo$snappy->getOutput('http://www.github .com');
기억하세요. 호스팅 공급자는 외부 바이너리 호출을 허용하지 않을 수 있습니다. 7. Idiorm - 경량 ORM 라이브러리 Idiorm은 이전에 이 웹사이트의 튜토리얼에서 사용한 것 중 제가 가장 좋아하는 것입니다. PDO를 기반으로 구축된 PHP5 쿼리 빌더인 경량 ORM 라이브러리입니다. 이를 사용하면 지루한 SQL 작성 방법을 잊을 수 있습니다.
1234567 89101112131415 161718 $user= ORM::for_table('사용자') ->where_equal( code>->where_equal( code><code>'사용자 이름', 'j4mie') ->find_one();$user->first_name = '제이미';$user->save();$tweets= ORM::for_table('tweet') ->select('tweet.*') ->join('사용자', 배열( 'user.id', '=', 'tweet.user_id' )) ->where_equal('user.username', 'j4mie') ->find_many();foreach($tweetsas$tweet ) { 에코$tweet->text;}

Idiorm에는 Paris라는 자매 라이브러리가 있는데, 이는 Idiorm을 기반으로 한 Active Record 구현입니다.

8. Underscore – PHP용 도구 벨트

Underscore는 Javascript 애플리케이션용 도구 벨트인 원래 Underscore.js에 대한 인터페이스입니다. PHP 버전은 실망하지 않으며 거의 ​​모든 기본 기능을 지원합니다. 다음은 몇 가지 예입니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

__::each(array(1, 2, 3), function($num) { echo$num. ','; }); // 1,2,3,

$multiplier= 2;

__::each(array(1, 2, 3), function($num, $index) use($multiplier) {

  echo$index. '='. ($num* $multiplier) . ',';

});

// prints: 0=2,1=4,2=6,

__::reduce(array(1, 2, 3), function($memo, $num) { return$memo+ $num; }, 0); // 6

__::find(array(1, 2, 3, 4), function($num) { return$num% 2 === 0; }); // 2

__::filter(array(1, 2, 3, 4), function($num) { return$num% 2 === 0; }); // array(2, 4)

12

3

4

5

6

1

2

3

4

5

6

7

8

9

10

11

12

$headers= array('Accept'=> 'application/json');

$options= array('auth'=> array('user', 'pass'));

$request= Requests::get('https://api.github.com/gists', $headers, $options);

var_dump($request->status_code);

// int(200)

var_dump($request->headers['content-type']);

// string(31) "application/json; charset=utf-8"

var_dump($request->body);

// string(26891) "[…]"

7

8

9

10

11

1

2

3

4

5

6

7

8

$request= newBuzzMessageRequest('HEAD', '/', 'http://google.com');

$response= newBuzzMessageResponse();

$client= newBuzzClientFileGetContents();

$client->send($request, $response);

echo$request;

echo$response;

1213
__: :각(배열(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)
이 라이브러리는 체인 구문도 지원하므로 더욱 강력해집니다. 9. Requests - 단순 HTTP 요청 Requests는 HTTP 요청을 단순화하는 라이브러리입니다. 당신이 나와 같고 Curl에 전달된 다양한 매개변수를 거의 기억하지 못한다면 다음이 당신을 위한 것입니다:
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']);// string(31) "application/json; charset=utf-8"var_dump($request->body);// string(26891) "[…]"
이 라이브러리의 도움으로 HEAD, GET, POST, PUT, DELTE 및 PATCH HTTP 요청을 보낼 수 있습니다. 배열을 전달할 수 있습니다. 파일과 매개변수가 추가되고 해당하는 모든 데이터에 액세스할 수 있습니다. 10. Buzz - 간단한 HTTP 요청 라이브러리 Buzz는 HTTP 요청을 완료하는 또 다른 라이브러리입니다. 예는 다음과 같습니다. 티바디>테이블>

문서가 부족하기 때문에 지원하는 모든 매개변수를 알아보려면 소스 코드를 읽어야 합니다.

11. Goutte – 웹 스크래핑 라이브러리

Goutte는 웹사이트를 스크래핑하고 데이터를 추출하는 라이브러리입니다. 원격 페이지에서 특정 요소를 간단하게 선택할 수 있는 우아한 API를 제공합니다.

12345678 $request= newBuzzMessageRequest('HEAD' , '/', 'http://google.com'); $response= newBuzzMessageResponse();$client = BuzzClientFileGetContents();$client- >send($요청, $response);echo$request;<code>에코$response;

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

require_once'/path/to/goutte.phar';

useGoutteClient;

$client= newClient();

$crawler= $client->request('GET', 'http://www.symfony-project.org/');

//点击链接

$link= $crawler->selectLink('Plugins')->link();

$crawler= $client->click($link);

//使用一个类CSS语法提取数据

$t= $crawler->filter('#data')->text();

echo"Here is the text: $t";

12

3

4

5

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

printf("Right now is %s", Carbon::now()->toDateTimeString());

printf("Right now in Vancouver is %s", Carbon::now('America/Vancouver'));

$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, 'Europe/London');

$endOfWorld= Carbon::createFromDate(2012, 12, 21, 'GMT');

//总是以UTC对比

if(Carbon::now()->gte($endOfWorld)) {

    die();

}

if(Carbon::now()->isWeekend()) {

    echo'Party!';

}

echoCarbon::now()->subMinutes(2)->diffForHumans(); // '2分钟之前'

6789101112131415
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. Carbon – DateTime 라이브러리 Carbon은 DateTime API의 간단한 확장입니다.
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 코드 평가, (코드) 실행 시간 및 메모리 사용량 모니터링을 위한 마이크로 라이브러리입니다. 예는 다음과 같습니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

useUbenchUbench;

$bench= newUbench;

$bench->start();

//执行一些代码

$bench->end();

//获取执行消耗时间和内存

echo$bench->getTime(); // 156ms or 1.123s

echo$bench->getTime(true); // elapsed microtime in float

echo$bench->getTime(false, '%d%s'); // 156ms or 1s

echo$bench->getMemoryPeak(); // 152B or 90.00Kb or 15.23Mb

echo$bench->getMemoryPeak(true); // memory peak in bytes 内存峰值

echo$bench->getMemoryPeak(false, '%.3f%s'); // 152B or 90.152Kb or 15.234Mb

//在结束标识处返回内存使用情况

echo$bench->getMemoryUsage(); // 152B or 90.00Kb or 15.23Mb

1 2

3

4

5

6

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

useRespectValidationValidator asv;

//简单验证

$number= 123;

v::numeric()->validate($number); //true

//链式验证

$usernameValidator= v::alnum()->noWhitespace()->length(1,15);

$usernameValidator->validate('alganet'); //true

//验证对象属性

$user= newstdClass;

$user->name = 'Alexandre';

$user->birthdate = '1987-07-01';

//在一个简单链中验证他的属性

$userValidator= v::attribute('name', v::string()->length(1,32))

                  ->attribute('birthdate', v::date()->minimumAge(18));

$userValidator->validate($user); //true

7

8

9

10

11

1

2

3

4

5

$f= Filter::factory('string,max:5');

$str= 'This is a test string';

$f->validate($str); // false

$f->filter($str); // 'This '

1213141516 1718192021
사용UbenchUbench;$bench= 새로운Ubench;$bench->start();//일부 실행 코드 $bench->end(); //실행 시간 및 메모리 가져오기echo$bench->getTime() ; // 156ms 또는 1.123secho$bench->getTime(true ); // 경과된 마이크로타임(float)echo$bench->getTime( 거짓, '%d%s'); // 156ms 또는 1secho$bench->getMemoryPeak() // 152B 또는 90.00Kb 또는 15.23Mbecho$bench->getMemoryPeak( true); // 최대 메모리(바이트)echo$bench-&gt ;getMemoryPeak(false, '%.3f%s'); // 152B 또는 90.152Kb 또는 15.234Mb//끝 표시에서 메모리 사용량 반환echo$bench->getMemoryUsage() // 152B 또는 90.00Kb 또는 15.23Mb
개발 중에만 이러한 검사를 실행하는 것이 좋습니다. 14. 유효성 검사 – 입력 유효성 검사 엔진 유효성 검사는 PHP 라이브러리에서 가장 강력한 유효성 검사 엔진이라고 주장합니다. 그러나 그것은 그 이름에 걸맞는가? 아래를 보세요:
12 34567891011121314151617181920 사용 RespectValidationValidator asv //간단한 확인$number= 123;v::numeric()->validate($number ); //true //체인 확인$usernameValidator = v::alnum()->noWhitespace()->length(1,15);$usernameValidator->validate( '알가넷'); //true //객체 속성 확인$user = stdClass;$user->name = '알렉산드르';$user->생년월일 = '1987-07-01'; //간단한 체인에서 속성을 확인하세요 $userValidator= v::attribute('name', v::string()-&gt ;length (1,32))     ->attribute('생년월일' , v ::날짜()->minimumAge(18)); $userValidator->validate($user); //true
이 라이브러리를 전달할 수 있습니다 양식이나 기타 사용자가 제출한 데이터의 유효성을 검사하세요. 또한 많은 내장 유효성 검사, 예외 발생 및 사용자 정의 오류 메시지가 있습니다. 15. Filterus - 필터링 라이브러리 Filterus는 또 다른 필터링 라이브러리이지만 미리 설정된 패턴과 일치하는 출력을 검증할 수 있을 뿐만 아니라 필터링할 수도 있습니다. 예는 다음과 같습니다.
12345 $f= 필터::factory('string,max:5');$str= '테스트 문자열입니다.'; $f->validate($str); // false$f->filter($str ); // '이것'

Filterus에는 다양한 내장 모드가 있고 체인 사용을 지원하며 독립적인 유효성 검사 규칙을 사용하여 배열 요소의 유효성을 검사할 수도 있습니다.

16. Faker - 가짜 데이터 생성기

Faker는 가짜 데이터를 생성하는 PHP 라이브러리입니다. 이는 테스트 데이터베이스를 채우거나 웹 애플리케이션에 대한 테스트 데이터를 생성해야 할 때 유용합니다. 사용하기도 매우 쉽습니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

//引用Faker 自动加载器

require_once'/path/to/Faker/src/autoload.php';

//使用工厂创建来创建一个FakerGenerator实例

$faker= FakerFactory::create();

//通过访问属性生成假数据

echo$faker->name; // 'Lucy Cechtelar';

echo$faker->address;

  // "426 Jordy Lodge

  // Cartwrightshire, SC 88120-6700"

echo$faker->text;

  // Sint velit eveniet. Rerum atque repellat voluptatem quia ...

1 2

3

4

5

6

1

2

$m= newMustache_Engine;

echo$m->render('Hello {{planet}}', array('planet'=> 'World!')); // "Hello World!"

7

8

9

10

11

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

useGaufretteFilesystem;

useGaufretteAdapterFtp asFtpAdapter;

useGaufretteAdapterLocal asLocalAdapter;

//本地文件:

$adapter= newLocalAdapter('/var/media');

//可选地使用一个FTP适配器

// $ftp = new FtpAdapter($path, $host, $username, $password, $port);

//初始化文件系统

$filesystem= newFilesystem($adapter);

//使用它

$content= $filesystem->read('myFile');

$content= 'Hello I am the new content';

$filesystem->write('myFile', $content);

12131415 td >
//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->text; // Sint velit eveniet.Rerum atque repelt voluptatem quia...
객체 속성에 계속 액세스하는 한 무작위로 생성된 데이터가 계속 반환됩니다. 17. Mustache.php - 우아한 템플릿 라이브러리 Mustache는 실제로 다양한 프로그래밍 언어로 구현된 인기 있는 템플릿 언어입니다. 이를 사용하면 클라이언트 또는 서비스 세그먼트에서 템플릿을 재사용할 수 있습니다. 짐작하셨듯이 Mustache.php는 PHP를 사용하여 구현됩니다.
12 $m= newMustache_Engine; 에코$m->render('안녕하세요 {{행성}}' , 배열('행성'=> '세계!')); // "Hello World!"
제안 더 고급 예제를 보려면 공식 Mustache 문서를 살펴보세요. 18. Gaufrette - 파일 시스템 추상화 계층 Gaufrette는 파일 시스템에 대한 추상화 계층을 제공하는 PHP5 라이브러리입니다. 로컬 파일, FTP 서버, Amazon S3 등을 동일한 방식으로 조작하는 것이 가능합니다. 이를 통해 향후 파일에 어떻게 액세스할지 알지 않고도 프로그램을 개발할 수 있습니다.
12 34567891011121314151617 사용GaufretteFilesystem;사용GaufretteAdapterFtp asFtpAdapter;사용GaufretteAdapterLocal as LocalAdapter; //로컬 파일:$adapter= LocalAdapter('/var/media'); //선택적으로 FTP 어댑터 사용// $ftp = new FtpAdapter($path, $host, $ 사용자 이름, $password, $port); //파일 시스템 초기화$filesystem= new<code>파일 시스템($adapter); //사용$content= $filesystem->read('myFile');$content= '안녕하세요 저는 새로운 콘텐츠입니다';$filesystem-&gt ;쓰기('내파일', $content);

캐시 및 메모리 어댑터도 있으며 추후 더 추가될 예정입니다.

19. Omnipay – 결제 처리 라이브러리

Omnipay는 PHP 결제 처리 라이브러리입니다. 명확하고 일관된 API를 갖추고 있으며 수십 개의 게이트웨이를 지원합니다. 이 라이브러리를 사용하면 API를 배우고 다양한 결제 프로세서를 처리하기만 하면 됩니다. 예는 다음과 같습니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

useOmnipayCreditCard;

useOmnipayGatewayFactory;

$gateway= GatewayFactory::create('Stripe');

$gateway->setApiKey('abc123');

$formData= ['number'=> '4111111111111111', 'expiryMonth'=> 6, 'expiryYear'=> 2016];

$response= $gateway->purchase(['amount'=> 1000, 'card'=> $formData]);

if($response->isSuccessful()) {

//支付成功:更新数据库

    print_r($response);

} elseif($response->isRedirect()) {

//跳转到异地支付网关

    $response->redirect();

} else{

//支付失败:向客户显示信息

    exit($response->getMessage());

}

12

3

4

5

6

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

$storage= newUploadStorageFileSystem('/path/to/directory');

$file= newUploadFile('foo', $storage);

//验证文件上传

$file->addValidations(array(

//确保文件类型是"image/png"

    newUploadValidationMimetype('image/png'),

//确保文件不超过5M(使用"B","K","M"或者"G")

    newUploadValidationSize('5M')

));

//试图上传文件

try{

    //成功

    $file->upload();

} catch(Exception $e) {

    //失败!

    $errors= $file->getErrors();

}

78 910111213141516 171819
사용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());}
동일하고 일관된 API를 사용하면 여러 결제 프로세서를 쉽게 지원하거나 필요할 때 전환할 수 있습니다. 20. 업로드 - 파일 업로드 처리 업로드는 파일 업로드 및 확인을 단순화하는 라이브러리입니다. 양식을 업로드할 때 이 라이브러리는 파일 형식과 크기를 확인합니다.
12 34567891011121314151617181920 $storage= UploadStorageFileSystem('/path/to/directory'); $file= newUploadFile('foo' , $storage);//파일 업로드 확인$ 파일->addValidations(배열(/ /파일 형식이 "image/png"인지 확인하세요 newUploadValidationMimetype(' image/ png'),//파일이 5M를 초과하지 않는지 확인하세요("B", " K", "M " 또는 "G") newUploadValidationSize('5M ' )));//파일 업로드 시도 중시도{ //성공 $file->upload();} catch code>(예외 $e) { //실패했습니다!<code> $errors= $file->getErrors( );}

지루한 코드가 많이 줄어듭니다.

21. HTMLPurifier – HTML XSS 보호

HTMLPurifier는 강력한 화이트리스트 및 집계 분석을 통해 XSS 공격으로부터 코드를 보호하는 HTML 필터링 라이브러리입니다. 또한 출력 마크업이 표준을 준수하는지 확인합니다. (소스코드는 github에 있습니다)

1

2

3

4

5

require_once'/path/to/HTMLPurifier.auto.php';

$config= HTMLPurifier_Config::createDefault();

$purifier= newHTMLPurifier($config);

$clean_html= $purifier->purify($dirty_html);

12

3

4

5

1

2

3

4

5

6

7

useMischiefCollectiveColorJizzFormatsHex;

$red_hex= newHex(0xFF0000);

$red_cmyk= $hex->toCMYK();

echo$red_cmyk; // 0,1,1,0

echoHex::fromString('red')->hue(-20)->greyscale(); // 555555

require_once '/path/to/HTMLPurifier.auto.php';$config= HTMLPurifier_Config::createDefault () ;

$purifier= newHTMLPurifier( $config );

$clean_html= $purifier -&gt ;purify($dirty_html);

1

2

3

4

5

6

7

8

useLocationCoordinate;

useLocationDistanceVincenty;

$coordinate1= newCoordinate(19.820664, -155.468066); // Mauna Kea Summit 茂纳凯亚峰

$coordinate2= newCoordinate(20.709722, -156.253333); // Haleakala Summit

$calculator= newVincenty();

$distance= $calculator->getDistance($coordinate1, $coordinate2); // returns 128130.850 (meters; ≈128 kilometers)

귀하의 웹사이트에서 사용자가 HTML 코드를 제출하고 수정 없이 코드를 표시할 수 있도록 허용한다면 지금이 이 라이브러리를 사용할 때입니다. 22. ColorJizz-PHP – 색상 조작 라이브러리ColorJizz는 다양한 색상 형식을 변환하고 간단한 색상 작업을 수행할 수 있는 간단한 라이브러리입니다
1234 567 사용 MischiefCollectiveColorJizzFormatsHex; $red_hex= Hex(0xFF0000); 코드>$red_cmyk= $hex->toCMYK();에코$red_cmyk // 0,1,1,0echoHex::fromString('red')->hue(-20)->greyscale(); // 555555
이미 지원되며 can 모든 주류 색상 형식을 제어합니다 23. PHP Geo – 지리적 위치 위치 라이브러리 phpgeo는 지리적 좌표 간의 고정밀 거리를 계산하기 위한 간단한 라이브러리입니다. 예: 사용LocationCoordinate;사용LocationDistanceVincenty;$coordinate1= newCoordinate(19.820664, -155.468066) // 마우나 케아 서밋 마우나 케아$coordinate2= newCoordinate(20.709722, -156.253333 ); // 할레아칼라 정상회담$calculator= newVincenty ();$distance= $calculator->getDistance($coordinate1, $coordinate2); // 128130.850(미터; 128킬로미터)을 반환합니다.
12 345678

위치정보 데이터를 사용하는 앱에서 잘 작동합니다. HTML5 위치 API, Yahoo API(또는 날씨 웹 앱 튜토리얼에서 했던 것처럼 둘 다)를 번역하여 좌표를 얻을 수 있습니다.

24. ShellWrap – 아름다운 명령줄 래퍼

ShellWrap 라이브러리를 사용하면 PHP 코드에서 강력한 Linux/Unix 명령줄 도구를 사용할 수 있습니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

require'ShellWrap.php';

useMrRioShellWrap assh;

//列出当前文件下的所有文件

echosh::ls();

//检出一个git分支

sh::git('checkout', 'master');

//你也可以通过管道把一个命令的输出用户另一个命令

//下面通过curl跟踪位置,然后通过grep过滤’html’管道来下载example.com网站

echosh::grep('html', sh::curl('http://example.com', array(

    'location'=> true

)));

//新建一个文件

sh::touch('file.html');

//移除文件

sh::rm('file.html');

//再次移除文件(这次失败了,然后因为文件不存在而抛出异常)

try{

    sh::rm('file.html');

} catch(Exception $e) {

    echo'Caught failing sh::rm() call';

}

12

3

4

567891011121314151617181920212223 24252627
필수' ShellWrap.php';사용MrRioShellWrap assh ; //현재 파일 아래의 모든 파일 나열echosh::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>}
When 명령 이 라이브러리는 해당 행에서 예외가 발생할 때 예외를 발생시키므로 즉시 대응할 수 있습니다. 또한 한 명령의 출력을 다른 명령의 입력으로 파이프하여 유연성을 높일 수도 있습니다. 위 내용은 PHP 개발자가 꼭 알아야 할 24가지 라이브러리를 관련 내용을 포함하여 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.