14. Validation – 输入验证引擎Validation 声称是PHP库里最强大的验证引擎。但是,它能名副其实吗?看下面: 01 | use Respect\Validation\Validator as v; |
05 | v::numeric()->validate( $number ); |
08 | $usernameValidator = v::alnum()->noWhitespace()->length(1,15); |
09 | $usernameValidator ->validate( 'alganet' ); |
13 | $user ->name = 'Alexandre' ; |
14 | $user ->birthdate = '1987-07-01' ; |
17 | $userValidator = v::attribute( 'name' , v::string()->length(1,32)) |
18 | ->attribute( 'birthdate' , v:: date ()->minimumAge(18)); |
20 | $userValidator ->validate( $user ); |
你可以通过这个库验证你的表单或其他用户提交的数据。除此之外,它内置了很多校验,抛出异常和定制错误信息。 15. Filterus – 过滤库Filterus是另一个过滤库,但它不仅仅可以验证,也可以过滤匹配预设模式的输出。下面是一个例子: 1 | $f = Filter::factory( 'string,max:5' ); |
2 | $str = 'This is a test string' ; |
Filterus有很多内建模式,支持链式用法,甚至可以用独立的验证规则去验证数组元素。 16. Faker – 假数据生成器Faker 是一个为你生成假数据的PHP库。当你需要填充一个测试数据库,或为你的web应用生成测试数据时,它能派上用场。它也非常容易使用: 02 | require_once '/path/to/Faker/src/autoload.php' ; |
05 | $faker = Faker\Factory::create(); |
只要你继续访问对象属性,它将继续返回随机生成的数据。 17. Mustache.php – 优雅模板库Mustache是一款流行的模板语言,实际已经在各种编程语言中得到实现。使用它,你可以在客户端或服务段重用模板。 正如你猜得那样,Mustache.php 是使用PHP实现的。 1 | $m = new Mustache_Engine; |
2 | echo $m ->render( 'Hello {{planet}}' , array ( 'planet' => 'World!' )); |
建议看一下官方网站Mustache docs 查看更多高级的例子。 18. Gaufrette – 文件系统抽象层Gaufrette是一个PHP5库,提供了一个文件系统的抽象层。它使得以相同方式操控本地文件,FTP服务器,亚马逊 S3或更多操作变为可能。它允许你开发程序时,不用了解未来你将怎么访问你的文件。 01 | use Gaufrette\Filesystem; |
02 | use Gaufrette\Adapter\Ftp as FtpAdapter; |
03 | use Gaufrette\Adapter\Local as LocalAdapter; |
06 | $adapter = new LocalAdapter( '/var/media' ); |
12 | $filesystem = new Filesystem( $adapter ); |
15 | $content = $filesystem ->read( 'myFile' ); |
16 | $content = 'Hello I am the new content' ; |
17 | $filesystem ->write( 'myFile' , $content ); |
也有缓存和内存适配器,并且随后将会增加更多适配器。 19. Omnipay – 支付处理库Omnipay是一个PHP支付处理库。它有一个清晰一致的API,并且支持数十个网关。使用这个库,你仅仅需要学习一个API和处理各种各样的支付处理器。下面是一个例子: 01 | use Omnipay\CreditCard; |
02 | use Omnipay\GatewayFactory; |
04 | $gateway = GatewayFactory::create( 'Stripe' ); |
05 | $gateway ->setApiKey( 'abc123' ); |
07 | $formData = [ 'number' => '4111111111111111' , 'expiryMonth' => 6, 'expiryYear' => 2016]; |
08 | $response = $gateway ->purchase([ 'amount' => 1000, 'card' => $formData ]); |
10 | if ( $response ->isSuccessful()) { |
13 | } elseif ( $response ->isRedirect()) { |
15 | $response ->redirect(); |
18 | exit ( $response ->getMessage()); |
使用相同一致的API,可以很容易地支持多种支付处理器,或在需要时进行切换。 20. Upload – 处理文件上传Upload是一个简化文件上传和验证的库。上传表单时,这个库会校验文件类型和尺寸。 01 | $storage = new \Upload\Storage\FileSystem( '/path/to/directory' ); |
02 | $file = new \Upload\File( 'foo' , $storage ); |
05 | $file ->addValidations( array ( |
07 | new \Upload\Validation\Mimetype( 'image/png' ), |
10 | new \Upload\Validation\Size( '5M' ) |
17 | } catch (\Exception $e ) { |
19 | $errors = $file ->getErrors(); |
它将减少不少乏味的代码。 21. HTMLPurifier – HTML XSS 防护HTMLPurifier是一个HTML过滤库,通过强大的白名单和聚集分析,保护你代码远离XSS攻击。它也确保输出标记符合标准。 1 | require_once '/path/to/HTMLPurifier.auto.php' ; |
3 | $config = HTMLPurifier_Config::createDefault(); |
4 | $purifier = new HTMLPurifier( $config ); |
5 | $clean_html = $purifier ->purify( $dirty_html ); |
如果你的网站允许用户提交 HTML 代码,不修改就展示代码的话,那这时候就是用这个库的时候了。 22. ColorJizz-PHP – 颜色操控库ColorJizz是一个简单的库,借助它你可以转换不同的颜色格式,并且做简单的颜色运算 1 | use MischiefCollective\ColorJizz\Formats\Hex; |
3 | $red_hex = new Hex(0xFF0000); |
4 | $red_cmyk = $hex ->toCMYK(); |
7 | echo Hex::fromString( 'red' )->hue(-20)->greyscale(); |
它已经支持并且可以操控所有主流颜色格式了 23. PHP Geo – 地理位置定位库phpgeo是一个简单的库,用于计算地理坐标之间高精度距离。例如: 1 | use Location\Coordinate; |
2 | use Location\Distance\Vincenty; |
4 | $coordinate1 = new Coordinate(19.820664, -155.468066); |
5 | $coordinate2 = new Coordinate(20.709722, -156.253333); |
7 | $calculator = new Vincenty(); |
8 | $distance = $calculator ->getDistance( $coordinate1 , $coordinate2 ); |
它将在使用地理位置数据的app里出色工作。你可以试译 HTML5 Location API,雅虎的API(或两者都用,我们在weather web app tutorial中这样做了),来获取坐标。 24. ShellWrap – 优美的命令行包装器借助 ShellWrap 库,你可以在PHP代码里使用强大的 Linux/Unix 命令行工具。 01 | require 'ShellWrap.php' ; |
02 | use \MrRio\ShellWrap as sh; |
08 | sh::git( 'checkout' , 'master' ); |
17 | sh::touch( 'file.html' ); |
25 | } catch (Exception $e ) { |
26 | echo 'Caught failing sh::rm() call' ; |
当命令行里发生异常时,这个库抛出异常,所以你可以及时对之做出反应。它也可以通过管道让你一个命令的输出作为另一个命令的输入,来实现更强的灵活性。 原文链接: tutorialzine 翻译: 伯乐在线 - 贾朝藤 译文链接: http://blog.jobbole.com/54201/ |