当前位置:  编程技术>php
本页文章导读:
    ▪php中apc和文件缓存类的实现代码      PHP缓存类,实现了apc和文件缓存,继承Cache_Abstract即可实现调用第三方的缓存工具。 是个不错的php缓存类,也是学习php oop面向对象编程的好教材,分享给大家,希望对大家有一定帮助吧。 代.........
    ▪php支付宝支付接口程序及参数详解      1,php支付宝支付接口程序: <?php $service = isset( $_GET [ 'service' ]) ? $_GET [ 'service' ] : 'create_direct_pay_by_user' ; $services = array( //交易类型 'create_direct_pay_by_user' => '即时到账' , 'c.........
    ▪php获取汉字中首字母(gb2312编码)的实现代码      php取得汉字中首个字母,代码: <?php //取GB2312字符串首字母 //GBK汉字是按拼音顺序编码的 function get_letter($input){ $dict=array( 'a'=>0xB0C4, 'b'=>0xB2C0, 'c'=>0xB4ED, 'd'=>0xB6E9, 'e'=>0xB7A1.........

[1]php中apc和文件缓存类的实现代码
    来源: 互联网  发布时间: 2013-12-24

PHP缓存类,实现了apc和文件缓存,继承Cache_Abstract即可实现调用第三方的缓存工具。
是个不错的php缓存类,也是学习php oop面向对象编程的好教材,分享给大家,希望对大家有一定帮助吧。

代码:
 

代码示例:

<?php
class CacheException extends Exception {}
/**
* 缓存抽象类
*/
abstract class Cache_Abstract {
/**
     * 读缓存变量
     *
     * @param string $key 缓存下标
     * @return mixed
     */
     abstract public function fetch($key);

/**
     * 缓存变量
     *
     * @param string $key 缓存变量下标
     * @param string $value 缓存变量的值
     * @return bool
     */
     abstract public function store($key, $value);

/**
     * 删除缓存变量
     *
     * @param string $key 缓存下标
     * @return Cache_Abstract
     */
     abstract public function delete($key);

/**
     * 清(删)除所有缓存
     *
     * @return Cache_Abstract
     */
     abstract public function clear();

/**
     * 锁定缓存变量
     *
     * @param string $key 缓存下标
     * @return Cache_Abstract
     */
     abstract public function lock($key);
/**
     * 缓存变量解锁
     *
     * @param string $key 缓存下标
     * @return Cache_Abstract
     */
     abstract public function unlock($key);
/**
     * 取得缓存变量是否被锁定
     *
     * @param string $key 缓存下标
     * @return bool
     */
     abstract public function isLocked($key);
/**
     * 确保不是锁定状态
     * 最多做$tries次睡眠等待解锁,超时则跳过并解锁
     *
     * @param string $key 缓存下标
     */
     public function checkLock($key) {
         if (!$this->isLocked($key)) {
         return $this;
         }
        
             $tries = 10;
             $count = 0;
             do {
                 usleep(200);
                 $count ++;
             } while ($count <= $tries && $this->isLocked($key)); // 最多做十次睡眠等待解锁,超时则跳过并解锁
             $this->isLocked($key) && $this->unlock($key);
            
             return $this;
     }
}

/**
* APC扩展缓存实现
*
* @by www.
* @category     Mjie
* @package     Cache
* @license     New BSD License
* @version     $Id: Cache/Apc.php 版本号 2010-04-18 23:02 cmpan $
*/
class Cache_Apc extends Cache_Abstract {

protected $_prefix = 'cache.mjie.net';

public function __construct() {
     if (!function_exists('apc_cache_info')) {
     throw new CacheException('apc extension didn\'t installed');
     }
}

/**
     * 保存缓存变量
     *
     * @param string $key
     * @param mixed $value
     * @return bool
     */
public function store($key, $value) {
         return apc_store($this->_storageKey($key), $value);
}

/**
     * 读取缓存
     *
     * @param string $key
     * @return mixed
     */
public function fetch($key) {
         return apc_fetch($this->_storageKey($key));
}

/**
     * 清除缓存
     *
     * @return Cache_Apc
     */
public function clear() {
     apc_clear_cache();
     return $this;
}

/**
     * 删除缓存单元
     *
     * @return Cache_Apc
     */
public function delete($key) {
         apc_delete($this->_storageKey($key));
         return $this;
}

/**
     * 缓存单元是否被锁定
     *
     * @param string $key
     * @return bool
     */
public function isLocked($key) {
     if ((apc_fetch($this->_storageKey($key) . '.lock')) === false) {
         return false;
     }
    
     return true;
}

/**
     * 锁定缓存单元
     *
     * @param string $key
     * @return Cache_Apc
     */
public function lock($key) {
     apc_store($this->_storageKey($key) . '.lock', '', 5);
     return $this;
}

/**
     * 缓存单元解锁
     *
     * @param string $key
     * @return Cache_Apc
     */
public function unlock($key) {
     apc_delete($this->_storageKey($key) . '.lock');
     return $this;
}

/**
     * 完整缓存名
     *
     * @param string $key
     * @return string
     */
private function _storageKey($key) {
         return $this->_prefix . '_' . $key;
}
}
/**
* 文件缓存实现
*
* @by www.
* @category     Mjie
* @package     Cache
* @license     New BSD License
* @version     $Id: Cache/File.php 版本号 2010-04-18 16:46 cmpan $
*/
class Cache_File extends Cache_Abstract {

protected $_cachesDir = 'cache';

public function __construct() {
     if (defined('DATA_DIR')) {
     $this->_setCacheDir(DATA_DIR . '/cache');
     }
}

/**
     * 获取缓存文件
     *
     * @param string $key
     * @return string
     */
protected function _getCacheFile($key) {
     return $this->_cachesDir . '/' . substr($key, 0, 2) . '/' . $key . '.php';
}
     /**
     * 读取缓存变量
     * 为防止信息泄露,缓存文件格式为php文件,并以"<?php exit;?>"开头
     *
     * @param string $key 缓存下标
     * @return mixed
     */
     public function fetch($key) {
             $cacheFile = self::_getCacheFile($key);
             if (file_exists($cacheFile) && is_readable($cacheFile)) {
                 return unserialize(@file_get_contents($cacheFile, false, NULL, 13));
             }
             return false;
     }
/**
     * 缓存变量
     * 为防止信息泄露,缓存文件格式为php文件,并以"<?php exit;?>"开头
     *
     * @param string $key 缓存变量下标
     * @param string $value 缓存变量的值
     * @return bool
     */
     public function store($key, $value) {
     $cacheFile = self::_getCacheFile($key);
     $cacheDir     = dirname($cacheFile);
     if(!is_dir($cacheDir)) {
         if([url=mailto:!@mkdir($cacheDir]!@mkdir($cacheDir[/url], 0755, true)) {
         throw new CacheException("Could not make cache directory");
         }
     }
             return @file_put_contents($cacheFile, '<?php exit;?>' . serialize($value));
}
/**
     * 删除缓存变量
     *
     * @param string $key 缓存下标
     * @return Cache_File
     */
     public function delete($key) {
         if(empty($key)) {
         throw new CacheException("Missing argument 1 for Cache_File::delete()");
     }
    
     $cacheFile = self::_getCacheFile($key);
     if([url=mailto:!@unlink($cacheFile]!@unlink($cacheFile[/url])) {
         throw new CacheException("Cache file could not be deleted");
     }
     return $this;
}
/**
     * 缓存单元是否已经锁定
     *
     * @param string $key
     * @return bool
     */
public function isLocked($key) {
     $cacheFile = self::_getCacheFile($key);
     clearstatcache();
     return file_exists($cacheFile . '.lock');
}
/**
     * 锁定
     *
     * @param string $key
     * @return Cache_File
     */
public function lock($key) {
     $cacheFile = self::_getCacheFile($key);
     $cacheDir     = dirname($cacheFile);
     if(!is_dir($cacheDir)) {
         if([url=mailto:!@mkdir($cacheDir]!@mkdir($cacheDir[/url], 0755, true)) {
         if(!is_dir($cacheDir)) {
                 throw new CacheException("Could not make cache directory");
         }
         }
     }
     // 设定缓存锁文件的访问和修改时间
     @touch($cacheFile . '.lock');
     return $this;
}
    
/**
     * 解锁
     *
     * @param string $key
     * @return Cache_File
     */
public function unlock($key) {
     $cacheFile = self::_getCacheFile($key);
         @unlink($cacheFile . '.lock');
     return $this;
}
/**
     * 设置文件缓存目录
     * @param string $dir
     * @return Cache_File
     */
protected function _setCacheDir($dir) {
     $this->_cachesDir = rtrim(str_replace()('\\', '/', trim($dir)), '/');
     clearstatcache();
     if(!is_dir($this->_cachesDir)) {
     mkdir($this->_cachesDir, 0755, true);
     }
     //
     return $this;
}
    
/**
     * 清空所有缓存
     *
     * @return Cache_File
     */
public function clear() {
     // 遍历目录清除缓存
     $cacheDir = $this->_cachesDir;
     $d = dir($cacheDir);
     while(false !== ($entry = $d->read())) {
     if('.' == $entry[0]) {
     continue;
     }
    
     $cacheEntry = $cacheDir . '/' . $entry;
     if(is_file($cacheEntry)) {
     @unlink($cacheEntry);
     } elseif(is_dir($cacheEntry)) {
     // 缓存文件夹有两级
     $d2 = dir($cacheEntry);
     while(false !== ($entry = $d2->read())) {
         if('.' == $entry[0]) {
         continue;
         }
        
         $cacheEntry .= '/' . $entry;
         if(is_file($cacheEntry)) {
         @unlink($cacheEntry);
         }
     }
     $d2->close();
     }    
     }
     $d->close();
    
     return $this;
}
}
/**
* 缓存单元的数据结构
* array(
*         'time' => time(),     // 缓存写入时的时间戳
*         'expire' => $expire, // 缓存过期时间
*         'valid' => true,         // 缓存是否有效
*         'data' => $value         // 缓存的值
* );
*/
final class Cache {
/**
     * 缓存过期时间长度(s)
     *
     * @var int
     */
private $_expire = 3600;
/**
     * 缓存处理类
     *
     * @var Cache_Abstract
     */
private $_storage = null;
/**
         * @return Cache
         */
static public function createCache($cacheClass = 'Cache_File') {
     return new self($cacheClass);
}
private function __construct($cacheClass) {
     $this->_storage = new $cacheClass();
}
/**
     * 设置缓存
     *
     * @param string $key
     * @param mixed $value
     * @param int $expire
     */
public function set($key, $value, $expire = false) {
     if (!$expire) {
     $expire = $this->_expire;
     }
    
     $this->_storage->checkLock($key);
    
     $data = array('time' => time(), 'expire' => $expire, 'valid' => true, 'data' => $value);
     $this->_storage->lock($key);
    
     try {
     $this->_storage->store($key, $data);
     $this->_storage->unlock($key);
     } catch (CacheException $e) {
     $this->_storage->unlock($key);
     throw $e;
     }
}
/**
     * 读取缓存
     *
     * @param string $key
     * @return mixed
     */
public function get($key) {
     $data = $this->fetch($key);
     if ($data && $data['valid'] && !$data['isExpired']) {
     return $data['data'];
     }
    
     return false;
}
/**
     * 读缓存,包括过期的和无效的,取得完整的存贮结构
     *
     * @param string $key
     */
public function fetch($key) {
     $this->_storage->checkLock($key);
     $data = $this->_storage->fetch($key);
     if ($data) {
     $data['isExpired'] = (time() - $data['time']) > $data['expire'] ? true : false;
     return $data;
     }
    
     return false;
}
/**
     * 删除缓存
     *
     * @param string $key
     */
public function delete($key) {
     $this->_storage->checkLock($key)
                         ->lock($key)
                         ->delete($key)
                         ->unlock($key);
}

public function clear() {
     $this->_storage->clear();
}
/**
     * 把缓存设为无效
     *
     * @param string $key
     */
public function setInvalidate($key) {
     $this->_storage->checkLock($key)
                         ->lock($key);
     try {
     $data = $this->_storage->fetch($key);
     if ($data) {
     $data['valid'] = false;
     $this->_storage->store($key, $data);
     }
     $this->_storage->unlock($key);
     } catch (CacheException $e) {
     $this->_storage->unlock($key);
     throw $e;
     }
}

/**
     * 设置缓存过期时间(s)
     *
     * @param int $expire
     */
public function setExpire($expire) {
     $this->_expire = (int) $expire;
     return $this;
}
}
?>


    
[2]php支付宝支付接口程序及参数详解
    来源: 互联网  发布时间: 2013-12-24

1,php支付宝支付接口程序:

<?php
$service  = isset( $_GET [ 'service' ]) ?  $_GET [ 'service' ] :  'create_direct_pay_by_user' ;
$services  = array(    //交易类型
     'create_direct_pay_by_user'  =>  '即时到账' ,
     'create_partner_trade_by_buyer'  =>  '担保交易' ,
);
if(! array_key_exists ( $service , $services )) exit( '错误的交易类型' );
?>
<p >
    <label>请选择交易类型:</label>
    <?php  foreach ( $services  as  $key => $val ):  ?>
        <?php  if( $service  ==  $key ):  ?>
            <b ><?php  echo  $val ;  ?> </b>
        <?php  else:  ?>
            <b><a href="/blog_article/</php  echo  url (array(.html'service' => $key ));  ?> "><?php  echo  $val ;  ?> </a></b>
        <?php  endif;  ?>
    <?php  endforeach;  ?>
</p>

2,php支付宝支付接口参数

<?php
//php支付宝支付接口参数 主要如下
//(合作商户编号,加密串,返回url, 默认编码,商品名称,商品简介,商户订单号,物流配送费用)
function  getRequestUrl ( $partner , $scode , $return_url , $charset , $subject , $body , $order , $lfee ) {
    global  $data , $service ;
     # 支付宝交易类型
     $data [ 'service' ] =  $service ; //create_partner_trade_by_buyer[担保交易]create_direct_pay_by_user[即时到账]
    # 合作商户编号
     $data [ 'partner' ] =  $partner ;
     # 请求返回地址
     $data [ 'return_url' ] =  $return_url ;
     # 默认编码
     $data [ '_input_charset' ] =  $charset ;
     # 默认支付渠道
     $data [ 'paymenthod' ] =  'bankPay' ;
     # 默认的网银
     $data [ 'defaultbank' ] =  'ICBCB2C' ;
     # 商品名称
     $data [ 'subject' ] =  $subject ;
     # 商品展示URL
     $data [ 'show_url' ] =  ’‘ ;
     # 异步通知返回
     $data [ 'notify_url' ] =  ’‘ ;
     # 商品简介
     $data [ 'body' ] =  $body ;
     # 商户订单号
     $data [ 'out_trade_no' ] =  $order ;
     # 物流配送费用
     $data [ 'logistics_fee' ] =  $lfee ;
     # 物流费用付款方式
     $data [ 'logistics_payment' ] =  'SELLER_PAY' ; //SELLER_PAY(卖家支付)、BUYER_PAY(买家支付)、BUYER_PAY_AFTER_RECEIVE(货到付款)
    # 物流配送方式
     $data [ 'logistics_type' ] =  'POST' ; //物流配送方式:POST(平邮)、EMS(EMS)、EXPRESS(其他快递)
    # 价格
     $data [ 'price' ] =  '10.00' ;
     #$data['total_fee'] = '10.00';
    # 付款方式
     $data [ 'payment_type' ] =  '1' ;
     # 商品数量
     $data [ 'quantity' ] =  '1' ;
     # 卖家email
     $data [ 'seller_email' ] =  'test@' ;
     $data  =  array_filter ( $data );

     ksort ( $data ); reset ( $data );
     $data [ 'sign' ] =  md5 ( urldecode ( http_build_query ( $data )). $scode );
     $data [ 'sign_type' ] =  'MD5' ;

     $url  =  'https://www.alipay.com/cooperate/gateway.do?' . http_build_query ( $data );
    return  $url ;
}
//把支付宝接口的参数,带入进行测试
//调用示例
$url  =  getRequestUrl ( '2010101908738750' , 'ma0werwert6s2bsd1frg7hisaiaz5xjr' ,
 'http://www. /pay/callback.php?gateway=alipay' , 'UTF-8' , '测试商品' , '测试内容' , uniqid (), '0.00' );
?>

    
[3]php获取汉字中首字母(gb2312编码)的实现代码
    来源: 互联网  发布时间: 2013-12-24

php取得汉字中首个字母,代码:

<?php
//取GB2312字符串首字母
//GBK汉字是按拼音顺序编码的
function get_letter($input){
$dict=array(
'a'=>0xB0C4,
'b'=>0xB2C0,
'c'=>0xB4ED,
'd'=>0xB6E9,
'e'=>0xB7A1,
'f'=>0xB8C0,
'g'=>0xB9FD,
'h'=>0xBBF6,
'j'=>0xBFA5,
'k'=>0xC0AB,
'l'=>0xC2E7,
'm'=>0xC4C2,
'n'=>0xC5B5,
'o'=>0xC5BD,
'p'=>0xC6D9,
'q'=>0xC8BA,
'r'=>0xC8F5,
's'=>0xCBF9,
't'=>0xCDD9,
'w'=>0xCEF3,
'x'=>0xD188,
'y'=>0xD4D0,
'z'=>0xD7F9,
);

$str_1 = substr($input, 0, 1);
if ($str_1 >= chr(0x81) && $str_1 <= chr(0xfe))    {
$num = hexdec(bin2hex(substr($input, 0, 2)));
foreach ($dict as $k=>$v){
if($v>=$num)
break;
}
return $k;
}
else{
return $str_1;
} //by www.
}

echo get_letter('脚');
echo get_letter('本');
echo get_letter('学');
echo get_letter('堂');
echo get_letter('欢');
echo get_letter('迎');
echo get_letter('您');
echo get_letter('网站编程');
?>

挺不错的一段代码,特别适合用来取标题中的首字母,用于生成按字母分类的文章列表哦。

您可能感兴趣的文章:
php汉字转拼音的实现代码
php取汉字首字母的代码
php批量获取首字母(汉字、数字、英文)的代码
将汉字转换成拼音的php函数


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3