remithomas/rt-extends

此包最新版本(1.0.1)没有可用的许可证信息。

ZF2实用工具

1.0.1 2013-05-22 07:58 UTC

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

寻求贡献

对于这个有用代码的实现想法?或者 出现一些错误

要求

安装

如何安装?

使用 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";
?>

感谢

待办事项

  • 许多其他验证器
  • 虚假数据(更多工具)
  • 一些有用的助手
  • 货币
  • 更多国家