remithomas / rt-extends
此包最新版本(1.0.1)没有可用的许可证信息。
ZF2实用工具
1.0.1
2013-05-22 07:58 UTC
Requires
- php: >=5.3.3
- umpirsky/country-list: dev-master
- zendframework/zendframework: 2.*
This package is not auto-updated.
Last update: 2024-09-23 10:57:40 UTC
README
ZF2实用工具列表。提供一些生成语言列表、SQL查询(重复键更新)、flashmessenger、国家州和更多的实用工具。
特性/目标
- SQL : Db\Sql\DuplicateInsert ON DUPLICATE KEY UPDATE 选项
- 验证器 : 日期晚于,日期早于
- Uri
- 缩略图 : 从URI获取缩略图
- 类型 : 获取媒体类型
- 元数据 : 获取媒体元数据
- 有用
- 位置 : 国家列表、州列表、邮编搜索
- I18n : 大洲列表、语言列表、时区列表
- 数据 : 假数据 Lorem Ipsum 生成器
- 文件 : 创建 Zip 存档、解压存档、获取 Favicon
- PHP : sprintf 与动态变量
- 视图助手 : 扩展 Flash messenger(子消息和消息已翻译)
- 日期 : 倒计时
- BodyClasses : 从控制器管理你的 body CSS 类
- 片段 : 快速创建基本的 CSRF
寻求贡献
要求
- Zend Framework 2(最新 master 版本)
- umpirsky/country-list(最新 master 版本)
- ZipArchive
- CURL 扩展
安装
如何安装?
使用 composer.json
{ "name": "zendframework/skeleton-application", "description": "Skeleton Application for ZF2", "license": "BSD-3-Clause", "keywords": [ "framework", "zf2" ], "minimum-stability": "dev", "homepage": "http://framework.zend.com/", "require": { "php": ">=5.3.3", "zendframework/zendframework": "dev-master", "remithomas/rt-extends": "dev-master" } }
激活模块
application.config.php
<?php return array( 'modules' => array( 'Application', 'RtExtends', ) ); ?>
示例
Db\Sql
包含 DuplicateInsert.php 的 Sql 类
$value = array( 'user_id' => 2, 'value' => 'myvalue' ); $sql = new \RtExtends\Db\Sql($adapter, 'mytable'); $DuplicateInsert = $sql->duplicateInsert(); $DuplicateInsert->values($values); $sqlString = $sql->getSqlStringForSqlObject($DuplicateInsert); $adapter->query($sqlString, Adapter::QUERY_MODE_EXECUTE);
Db\Sql\DuplicateInsert
<?php $value = array( 'user_id' => 2, 'value' => 'myvalue' ); $DuplicateInsert = new RtExtends\Db\Sql\DuplicateInsert("user"); $DuplicateInsert->values($value); $statment = $this->dbAdapter->createStatement(); $DuplicateInsert->prepareStatement($this->dbAdapter, $statment); $statment->execute(); ?>
上述代码生成以下查询
INSERT INTO `user` (`user_id`, `value`) VALUES (2, 'myvalue') ON DUPLICATE KEY UPDATE `user_id`=VALUES(`user_id`), `value`=VALUES(`value`);
Validator\Date\IsLater
public function getInputFilterSpecification() { return array( 'datestart' => array( 'required' => true, 'validators' => array( array( 'name' => "RtExtends\Validator\Date\IsLater", 'options' => array( 'min' => date ("d F Y - H:i", mktime()), 'format' => 'd F Y - H:i', 'timezone' => 'Europe/London' ) ) ), ), ); }
Validator\Date\IsEarlier
public function getInputFilterSpecification() { return array( 'dateend' => array( 'required' => true, 'validators' => array( array( 'name' => "RtExtends\Validator\Date\IsEarlier", 'options' => array( 'max' => date ("d F Y - H:i", mktime()), 'format' => 'd F Y - H:i', 'timezone' => 'Europe/London' ) ) ), ), ); }
Uri
Uri\Thumb
获取 URI 的缩略图列表
$uri = "http://www.dailymotion.com/video/x9003r_pac-man-remi-gaillard_fun"; $uri = "http://www.youtube.com/watch?v=1VVkIOxRcX0"; // youtube $thumbUri = new \RtExtends\Uri\Thumb(); var_dump($thumbUri->getThumbs($uri)); // limit the number of thumbnails var_dump($thumbUri->getThumbs($uri, 2));
获取 URI 的一个缩略图
$uri = "http://framework.zend.com/blog/"; $thumbUri = new \RtExtends\Uri\Thumb(); var_dump($thumbUri->getThumb($uri));
Uri\Type
获取媒体类型
$typeUri = new \RtExtends\Uri\Type(); $typeUri->getType("http://www.youtube.com/watch?v=1VVkIOxRcX0"); // return youtube
Uri\MetaData
获取媒体的元数据。所有 URI 获取标题和描述
$metadataUri = new \RtExtends\Uri\MetaData(); $metadataUri->getMetaData("http://www.youtube.com/watch?v=1VVkIOxRcX0"); /* return array( 'title' => 'media title', 'description' => 'media description', // ... ) */
Useful\I18n\Languages
语言列表
var_dump(RtExtends\Useful\I18n\Languages::getSimpleCodeLanguages()); // array("fr"=>"Français","en"=>"English",'pt'=>'Português',....)
var_dump(RtExtends\Useful\I18n\Languages::getLanguages()); // array('lv_LV'=>'Latvija - Latviešu','en_LB'=>'Lebanon - English','lt_LT'=>'Lietuva - Lietuvių','fr_LU'=>'Luxembourg - Français',,....)
Useful\Location
国家列表(数组返回)
\RtExtends\Useful\Location\Countries::getCountries();
邮编
\RtExtends\Useful\Location\Ziptastic::dataLocation("US", "33330"); /* Return a stdClass object object(stdClass)#748 (3) { ["city"] => string(15) "Fort Lauderdale" ["state"] => string(7) "Florida" ["country"] => string(2) "US" } */
国家的州(DE、FR、US 可用)
\RtExtends\Useful\Location\Country\Us::states(); \RtExtends\Useful\Location\Country\Us::statesFIPS(); // FIPS codes \RtExtends\Useful\Location\Country\Fr::states(); \RtExtends\Useful\Location\Country\De::states();
国家的县(FR、US 可用)
\RtExtends\Useful\Location\Country\Fr::counties(); \RtExtends\Useful\Location\Country\Fr::countiesStructured(); // by states \RtExtends\Useful\Location\Country\Us::counties(); \RtExtends\Useful\Location\Country\Us::countiesStructured(); // by states
Useful\File\Zip
创建 zip 文件
<?php $files=array('file1.jpg', 'file2.jpg', 'file3.gif'); /** * * @param array $files * @param string $destination * @param bool $overwrite * @return boolean */ RtExtends\Useful\File\Zip::createZip($files, 'path/destination/myzipfile.zip', true); ?>
解压存档
<?php RtExtends\Useful\File\Zip::unzip('path/to/archive', 'path/destination'); ?>
Useful\Data\Fake
Lorem Ipsum:段落
生成段落
<?php // simple use : generate only one paragraph (element p) echo \RtExtends\Useful\Data\Fake::getParagraphLoremIpsum(); // generate 3 paragraphs (element <p>) with class 'lead' echo \RtExtends\Useful\Data\Fake::getParagraphLoremIpsum(3,"p",array("class"=>"lead")); // generate 2 divs (element <div>) with class 'alert alert-info' echo \RtExtends\Useful\Data\Fake::getParagraphLoremIpsum(2,"div",array("class"=>"alert alert-info")); ?>
如果你不需要获取随机段落的列表,只需这样做
echo \RtExtends\Useful\Data\Fake::getParagraphLoremIpsum(2,"div",array("class"=>"alert alert-info"),false); ?>
Lorem Ipsum:单词
// simple use : 10 words echo \RtExtends\Useful\Data\Fake::getWordLoremIpsum(10); // include in tag (ex: <p class='lead>>) echo \RtExtends\Useful\Data\Fake::getWordLoremIpsum(10,"p",array("class"=>"lead"),"!"); // no random option echo \RtExtends\Useful\Data\Fake::getWordLoremIpsum(10,"p",array("class"=>"lead"),"!", false); // no random option but a special line echo \RtExtends\Useful\Data\Fake::getWordLoremIpsum(10,"p",array("class"=>"lead"),"!", 3);
Useful\Php\String
$data = array("this", "cool"); echo RtExtends\Useful\Php\String::sprintfArray("%s is %s", $data); $data = array( "otherway" => "Or", "second" => "like that" ); echo RtExtends\Useful\Php\String::sprintfArray("%(otherway)s maybe %(second)s !", $data);
View\Helper\ExtendedFlashMessenger
在你的布局中
echo $this->extendedFlashMessenger(true); // true is to get also current messages
在你的控制器中
// Success ! $flashMessage = new FlashMessage(); $flashMessage->setTitle("bravo"); $flashMessage->setMessages("Yes you did"); $this->flashmessenger()->addSuccessMessage($flashMessage); // Error ! $flashMessage = new FlashMessage(); $flashMessage->setTitle("Ups"); $flashMessage->setMessages("This is wrong"); $this->flashmessenger()->addErrorMessage($flashMessage);
使用变量
// Ups error ! (with sub messages $subMessage = new FlashMessageSub(); $subMessage->setMessage("Ups %(name)s"); // first message $subMessage->setVariables(array( 'name' => "John Doe" )); $subMessageSecond = new FlashMessageSub(); $subMessageSecond->setMessage("Please check here %(url)s"); // first message $subMessageSecond->setVariables(array( 'url' => "https://php.ac.cn" )); $flashMessage = new FlashMessage(); $flashMessage->setTitle("Sorry"); $flashMessage->setMessages(array($subMessage,$subMessageSecond)); $this->flashmessenger()->addErrorMessage($flashMessage);
日期视图助手:倒计时
date_default_timezone_set('America/Montreal'); $date = new \DateTime('NOW'); // countdown result in ARRAY $countDown = $this->rtCountDown($date->getTimestamp()+167890, $date->getTimestamp(), true); // string (is default param) $countDown = $this->rtCountDown($date->getTimestamp()+167890, $date->getTimestamp(), false); <<<<<<< HEAD
BodyClasses 视图助手
在你的控制器中
$this->BodyClasses()->addClass("my-css-class"); $this->BodyClasses()->addClass(array("my-css-class", "blue-bck"));
在你的视图脚本中
?><body class="<?php echo $this->rtBodyClasses()->render(); ?>"> ======= >>>>>>> FETCH_HEAD
片段
一些快速片段
Snippets\Form\Element
$form = new Form('my-form'); $form->add(\RtExtends\Snippets\Form\Element\Csrf::getCreateElementArray("crsf", 60*60)); /* generate $form->add(array( 'type' => 'Zend\Form\Element\Csrf', 'name' => 'crsf', 'options' => array( 'csrf_options' => array( 'timeout' => '3600' ) ) ));*/
Snippets\Js
jQuery
<?php echo \RtExtends\Snippets\Js\Jquery::getUrl(); echo "https://ajax.googleapis.ac.cn/ajax/libs/jquery/1.9.1/jquery.min.js"; echo \RtExtends\Snippets\Js\Jquery::getUrl("2.0.0"); echo "https://ajax.googleapis.ac.cn/ajax/libs/jquery/2.0.0/jquery.min.js"; ?>
jQuery UI
<?php echo \RtExtends\Snippets\Js\Jqueryui::getUrl(); echo "https://ajax.googleapis.ac.cn/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js"; ?>
感谢
- 致 Saša Stamenković,感谢他的出色模块 country-list。
- 致 Thomas Schultz,感谢 Ziptastic,别忘了支持这个模块!
待办事项
- 许多其他验证器
- 虚假数据(更多工具)
- 一些有用的助手
- 货币
- 更多国家