喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

[北京]代朋友公司招聘PHP高级程序员多名

上一主题 下一主题
 63  5/7  <  1  2  3  4  5  6  7  > 
     
标题: 最近写的代码 仅做交流用  
 
shudehuiyi
新手上路
Rank: 1



UID 77001
精华 0
积分 37
帖子 38
金钱 37 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-7-25
状态 离线
不错的代码
顶你一下
2007-9-18 02:13 PM#41
查看资料  发短消息  顶部
 
kissmumu
新手上路
Rank: 1



UID 89260
精华 0
积分 4
帖子 4
金钱 4 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2007-3-13
状态 离线
[推荐阅读] 呵呵,大家好!谁有简单的OA源码啊?
做个记号,顶楼主一下
2007-9-27 08:52 AM#42
查看资料  发短消息  顶部
 
sanders_yao
版主
Rank: 7Rank: 7Rank: 7
or2 =333


UID 30286
精华 0
积分 2504
帖子 4657
金钱 2501 喜悦币
威望 0
人脉 3
阅读权限 100
注册 2004-7-23
来自 北京 菜户营
状态 离线
[推荐阅读] 紧急!寻找解决方案
一直给老板做项目,最近在师父的关照下才有了点时间写自己的代码。放到这里备案,以防被删除或被当成敏感内容和谐。 终于完成了,老规矩,由于这里的php标签吃斜杠,我打个包,有兴趣的下载看一下,还请高手赐教。

<?php
//==================================================
//    类型:                HashStore
//    作者:                Sanders Yao
//    功能:                使用列散路径存储数据

//    属性:
//    @itsDir:            数据所在目录
//    @itsExtra:            数据文件扩展名
//    @itsSetTrigger:        保存数据触发器
//    @itsGetTrigger:        获取数据触发器

//    方法:
//    HashStore:            构造函数
//    setTrigger:            设定触发器
//    getPath:            依据键名穿件并返回数据存储路径
//    get:                根据键名获取数据
//    set:                根据键名存储数据
//    mkpath:                根据路径循环创建完整目录
//    keyConvert:            键名和文件名之间的相互转换
//==================================================
define("HASHSTORE_KEYCONVERT_DERICT_TOFILE"1);
define("HASHSTORE_KEYCONVERT_DERICT_TOVARIBLE"0);

class 
HashStore{
    var 
$itsDir;
    var 
$itsExtra;
    var 
$itsErrorTrigger;
    var 
$itsSetTrigger;
    var 
$itsGetTrigger;
    
    
//==================================================
    //    方法名:    HashStore($dir)
    //    功能:    构造函数
    //    参数:
    //    @dir:    数据存储路径
    //    返回:    本类型的对象实例
    //==================================================
    
function HashStore($dir){
        if(
is_dir($dir)){
            
$this->itsDir        $dir;
        }else{
            
$this->mkpath($dir0777);
        }
        
$this->itsExtra            ".dat";
        
$this->itsErrorTrigger    NULL;
        
$this->itsSetTrigger    NULL;
        
$this->itsGetTrigger    NULL;
    }
    
    
//==================================================
    //    方法名:    setTrigger($set, $get, $error)
    //    功能:    设定触发器
    //    参数:
    //    @set:    存储触发器
    //    @get:    获取触发器
    //    @error:    错误触发器
    //    返回:    无
    //==================================================
    
function setTrigger($set NULL$get NULL$error NULL){
        
$this->itsErrorTrigger    $set;
        
$this->itsSetTrigger    $get;
        
$this->itsGetTrigger    $error;
    }
    
    
//==================================================
    //    方法名:    getPath($key)
    //    功能:    通过键创建并返回路径
    //    参数:
    //    @key:    键值
    //    返回:    路径
    //==================================================
    
function getPath($key){
        
$hash    md5($key);
        
$path    $this->itsDir $hash[0] . $hash[1] . "/" $hash[2] . $hash[3] . "/" $this->keyConvert($key) . "/";
        if(!
is_dir($path)){
            
$this->mkpath($path0777);
        }
        return 
$path;
    }
    
    
//==================================================
    //    方法名:    get($key, $cell = NULL, $func = NULL)
    //    功能:    通过键获取数据
    //    参数:
    //    @key:    键值
    //    @cell:    限定列
    //    @func:    调用的触发函数 置空则调用$this->itsGetTrigger
    //    返回:    数据
    //==================================================
    
function get($key$cell NULL$func NULL){
        
$path    $this->getPath($key);
        
$data    = array();
        if(
is_array($cell)){
            foreach(
$cell as $v){
                
$var    $this->keyConvert($v);
                if(
file_exists($path.$var.$this->itsExtra)){
                    
$data[$v]    = file_get_contents($path.$var.$this->itsExtra);
                }
            }
        }elseif(
is_string($cell)){
            
$var    $this->keyConvert($cell);
            if(
file_exists($path.$var.$this->itsExtra)){
                
$data[$cell]    = file_get_contents($path.$var.$this->itsExtra);
            }
        }else{
            
$files    glob($path."*".$this->itsExtra);
            foreach(
$files as $v){
                
$lenPath    strlen($path);
                
$lenVar        strlen($v) - $lenPath strlen($this->itsExtra);
                
$var        $this->keyConvert(substr($v$lenPath$lenVar), HASHSTORE_KEYCONVERT_DERICT_TOVARIBLE);
                
$data[$var]    = file_get_contents($v);
            }
        }
        if(
$func){
            
call_user_func($func$key$data);
        }elseif(
$this->itsGetTrigger){
            
call_user_func($this->itsGetTrigger$key$data);
        }
        return 
$data;
    }
    
    
//==================================================
    //    方法名:    set($key, $data, $func = NULL)
    //    功能:    通过键存储数据
    //    参数:
    //    @key:    键值
    //    @data:    数据 二维关联数组
    //    @func:    调用的触发函数 置空则调用$this->itsSetTrigger
    //    返回:    Boolean
    //==================================================
    
function set($key$data$func NULL){
        
$path    $this->getPath($key);
        foreach(
$data as $k=>$v){
            
$filePath    $path.$this->keyConvert($k).$this->itsExtra;
            if(
file_exists($filePath)){
                if(
false == @unlink($filePath)){
                    
call_user_func($this->itsErrorTrigger$this"Can not delete the file({$filePath})");
                }
                return 
false;
            }
            
$fp            = @fopen($filePath"w");
            if(
false == $fp){
                if(
$this->itsErrorTrigger){
                    
call_user_func($this->itsErrorTrigger$this"Can not write the file({$filePath})");
                }
                return 
false;
            }
            
flock($fpLOCK_EX);
            
fwrite($fp$v);
            
fclose($fp);
            unset(
$fp);
        }
        if(
$func){
            
call_user_func($func$key$data);
        }elseif(
$this->itsSetTrigger){
            
call_user_func($this->itsSetTrigger$key$data);
        }
        return 
true;
    }
    
    
//==================================================
    //    方法名:    mkpath($path, $mode)
    //    功能:    创建路径
    //    参数:
    //    @path:    路径
    //    @mode:    权限
    //    返回:    Boolean
    //==================================================
    
function mkpath($path$mode){
        if(
== intval(phpversion())){
            if(
false == @mkdir($path0777true)){
                if(
$this->itsErrorTrigger){
                    
call_user_func($this->itsErrorTrigger$this"Can not create the path({$path})");
                }
                return 
false;
            }
        }else{
            
$arrayPath    explode("/"$path);
            
$path        array_shift($arrayPath);
            foreach(
$arrayPath as $v){
                
$path    .= "/" $v;
                if(!
is_dir($path) && "." != $v && ".." != $v){
                    if(
false == @mkdir($path$mode)){
                        if(
$this->itsErrorTrigger){
                            
call_user_func($this->itsErrorTrigger$this"Can not create the path({$path})");
                        }
                        return 
false;
                    }
                    @
chmod($path$mode);
                }
            }
        }
        return 
true;
    }
    
    
//==================================================
    //    方法名:    keyConvert($key, $direct = HASHSTORE_KEYCONVERT_DERICT_TOFILE)
    //    功能:    将键名和变量名转换为合法的目录名 可逆向转换
    //    参数:
    //    @key:    键值或文件名
    //    @direct:转换方向 默认由键值向文件名转换
    //    返回:    合法的文件名或还原的键名
    //==================================================
    
function keyConvert($key$direct HASHSTORE_KEYCONVERT_DERICT_TOFILE){
        
$map    = array(
            
"&"    => "&amp;",
            
"<"    => "&lt;",
            
">"    => "&gt;",
            
"\"=> "&#92;",
            
"/"    => "&#47;",
            
":"    => "&#58;",
            
"?"    => "&#63;",
            
"*"    => "&#42;",
            
"|"    => "&#124;",
            
"\""=> "&#34;",
            
"."    => "&#46;"
        
);
        if(
$direct){
            return 
str_replace(array_keys($map), array_values($map), $key);
        }else{
            return 
str_replace(array_values($map), array_keys($map), $key);
        }
    }
}
?>


 附件: 您所在的用户组无法下载或查看附件



最近写的一些代码都会在以下地址发布,有兴趣的来批:
http://www.phpx.com/happy/thread-131368-1-1.html
2007-12-13 07:03 PM#43
查看资料  Blog  发短消息  顶部
 
sanders_yao
版主
Rank: 7Rank: 7Rank: 7
or2 =333


UID 30286
精华 0
积分 2504
帖子 4657
金钱 2501 喜悦币
威望 0
人脉 3
阅读权限 100
注册 2004-7-23
来自 北京 菜户营
状态 离线
[推荐阅读] PHP开发工程师
分页类型

由于以前的那个分页类型的帖子被和谐了 今天重新写了一个贴出来

<?php
//==================================================
//    类型:            pageList
//    作者:            Sanders Yao
//    功能:            获取页数列表

//    属性:
//    @itsPage:        当前页数
//    @itsLength:        页数列表长度
//    @itsList:        页数列表
//    @itsTotalPage:    总页数
//    @itsOffset:        MySQL的LIMIT偏移量参数
//    @itsPageBack:    前一页
//    @itsPageNext:    后一页
//    @itsListBack:    快退
//    @itsListNext:    快进
//==================================================

//======================================
// 必要常量:PAGELIST_MODE_ALL:        所有页数模式
// 必要常量:PAGELIST_MODE_FIX:        固定页数模式
// 必要常量:PAGELIST_MODE_MID:        中点页数模式
// 必要常量:PAGELIST_MODE_RANDOM:    随机页数模式
//======================================
define("PAGELIST_MODE_ALL"0);
define("PAGELIST_MODE_FIX"1);
define("PAGELIST_MODE_MID"2);
define("PAGELIST_MODE_RANDOM"3);

class 
pageList{
    var 
$itsPage;
    var 
$itsLength;
    var 
$itsList;
    var 
$itsTotalPage;
    var 
$itsOffset;
    var 
$itsPageBack;
    var 
$itsPageNext;
    var 
$itsListBack;
    var 
$itsListNext;

    
//======================================
    // 函数: pageList($num = 0, $perpage = 10, $page = NULL, $length = 10)
    // 功能: 构造函数
    // 参数: $num:        总记录数
    // 参数: $perpage:    每页记录数
    // 参数: $page:        页数
    // 参数: $length:    页数列表长度
    // 返回: 该类型的对象实例
    //======================================
    
function pageList($num 0$perpage 10$page NULL$length 10){
        if(
$page){
            
$this->itsPage        $page;
        }else{
            
$this->itsPage        = isset($_GET["page"]) && is_numeric($_GET["page"]) && $_GET["page"] > 0
                
$_GET["page"]
                : 
1;
        }
        
$this->itsLength    $length;
        
$this->itsTotalPage    ceil($num $perpage);
        
$this->itsOffset    = ($this->itsPage 1) * $perpage;
        
$this->itsPageBack    $this->itsPage 1
            
$this->itsPage 1
            
1;
        
$this->itsPageNext    $this->itsPage $this->itsTotalPage
            
$this->itsPage 1
            
$this->itsTotalPage;
    }

    
//======================================
    // 函数: getList($mode)
    // 功能: 构造函数
    // 参数: $mode:        列表模式
    // 参数: $ext:        扩展参数
    // 返回: 页数列表
    //======================================
    
function getList($mode PAGELIST_MODE_MID$ext NULL){
        switch(
$mode){
            case 
PAGELIST_MODE_ALL:
                return 
$this->modeAll();
            case 
PAGELIST_MODE_FIX:
                return 
$this->modeFix();
            case 
PAGELIST_MODE_MID:
                return 
$this->modeMid();
            case 
PAGELIST_MODE_RANDOM:
                return 
$this->modeRandom();
            default:
                return 
$this->modeMid();
        }
    }

    
//======================================
    // 函数: modeAll()
    // 功能: 获取所有页数
    // 参数: 无
    // 返回: 页数列表
    //======================================
    
function modeAll(){
        
$this->itsList    = array();
        for(
$i 1;$i <= $this->itsTotalPage;$i ++){
            
$this->itsList[]    = $i;
        }
        return 
$this->itsList;
    }

    
//======================================
    // 函数: modeFix()
    // 功能: 固定页数
    // 参数: 无
    // 返回: 页数列表
    //======================================
    
function modeFix(){
        
$this->itsList    = array();
        
$start            floor(($this->itsPage 1) / $this->itsLength) * $this->itsLength 1;
        
$end            $start $this->itsLength 1;
        
$end            $end $this->itsTotalPage
            
$this->itsTotalPage
            
$end;
        for(
$i $start;$i <= $end;$i ++){
            
$this->itsList[]    = $i;
        }
        
$this->itsListBack    $start 1
            
$start 1
            
$this->itsPage;
        
$this->itsListNext    $end $this->itsTotalPage
            
$end 1
            
$this->itsPage;
        return 
$this->itsList;
    }

    
//======================================
    // 函数: modeMid()
    // 功能: 中点页数
    // 参数: 无
    // 返回: 页数列表
    //======================================
    
function modeMid(){
        
$this->itsList    = array();
        if(
$this->itsLength 2){
            
$frontHalf    $backHalf        floor($this->itsLength 2);
        }else{
            
$frontHalf    $this->itsLength 2;
            
$backHalf    $frontHalf 1;
        }
        if(
$this->itsPage $frontHalf 1){
            
$start        1;
        }elseif(
$this->itsPage $backHalf $this->itsTotalPage){
            
$start        $this->itsPage $frontHalf;
        }else{
            
$temp        $this->itsPage $frontHalf $backHalf $this->itsTotalPage $this->itsPage;
            
$start        $temp 1
                
1
                
$temp;
        }
        if(
$this->itsPage $backHalf $this->itsTotalPage){
            
$end        $this->itsTotalPage;
        }elseif(
$this->itsPage $frontHalf 1){
            
$end        $this->itsPage $backHalf;
        }else{
            
$temp        $this->itsPage $backHalf $frontHalf $this->itsPage 1;
            
$end        $temp $this->itsTotalPage
                
$this->itsTotalPage
                
$temp;
        }
        for(
$i $start;$i <= $end;$i ++){
            
$this->itsList[]    = $i;
        }
        
$this->itsListBack    $this->itsPage $this->itsLength 1
            
$this->itsPage $this->itsLength
            
1;
        
$this->itsListNext    $this->itsPage $this->itsLength $this->itsTotalPage
            
$this->itsPage $this->itsLength
            
$this->itsTotalPage;
        return 
$this->itsList;
    }

    
//======================================
    // 函数: modeRandom()
    // 功能: 随机页数
    // 参数: 无
    // 返回: 页数列表
    //======================================
    
function modeRandom(){
        
$all                $this->modeAll();
        
$this->itsList        = array();
        list(
$sec$usc)    = explode(" "microtime());
        
srand($usc);
        
shuffle($all);
        
$end                $this->itsTotalPage $this->itsLength
            
$this->itsLength
            
$this->itsTotalPage 1;
        for(
$i 0;$i <= $end;$i ++){
            
$temp    array_shift($all);
            if(
$this->itsPage != $temp){
                
$this->itsList[]    = $temp;
            }else{
                
$this->itsList[]    = array_shift($all);
            }
        }
        return 
$this->itsList;
    }
}
?>
使用范例如下:

<?php
$page        
= new pageList(100015NULL15);
$allPage    $page->getList(PAGELIST_MODE_ALL);
$pageList    $page->getList();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>test</title>
</head>
<body>
<a href="1.php?page=1">first</a>&nbsp;
<a href="1.php?page=<?=$page->itsListBack?>">&lt;&lt;</a>&nbsp;
<a href="1.php?page=<?=$page->itsPageBack?>">&lt;</a>&nbsp;
<?php
foreach($pageList as $v){
?>
<?php 
if($page->itsPage == $v){ ?><?=$v?><?php }else{ ?><a href="1.php?page=<?=$v?>"><?=$v?></a><?php ?>&nbsp;
<?php ?>
<a href="1.php?page=<?=$page->itsPageNext?>">&gt;</a>&nbsp;
<a href="1.php?page=<?=$page->itsListNext?>">&gt;&gt;</a>&nbsp;
<a href="1.php?page=<?=$page->itsTotalPage?>">last</a>
<select name="page">
<?php foreach($allPage as $v){ ?>
<option value="<?=$v?>"<? if($v==$page->itsPage){ ?> selected="selected"<?php ?>><?=$v?></option>
<?php ?>
</select>
</body>
</html>


 附件: 您所在的用户组无法下载或查看附件



最近写的一些代码都会在以下地址发布,有兴趣的来批:
http://www.phpx.com/happy/thread-131368-1-1.html
2007-12-26 05:22 PM#44
查看资料  Blog  发短消息  顶部
 
howliu
注册会员
Rank: 2
初级会员



UID 29675
精华 0
积分 52
帖子 251
金钱 52 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2004-6-28
状态 离线
[推荐阅读] 新建上海php交流群
感谢!做个记号 需要时



维护服务器(linux) 交换机 php+mysql    qq:345467398
2007-12-28 04:21 PM#45
查看资料  访问主页  发短消息  QQ  顶部
 
wleige (一天到晚游泳的鱼)
高级会员
Rank: 4
中级会员


UID 64348
精华 0
积分 616
帖子 644
金钱 616 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2005-5-25
来自 周口人在上海
状态 离线
[推荐阅读] 51.com高薪诚聘PHP高级开发工程师
真是不错的东东



有勇气来改变可以改变的事情,有胸怀来接受不可改变的事情,有智慧来分辨两者的不同。http://www.featuredbride.com
2008-1-3 03:46 PM#46
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
daliao2008
新手上路
Rank: 1



UID 105526
精华 0
积分 6
帖子 6
金钱 6 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2008-1-2
来自 北京
状态 离线
[推荐阅读] 5k求php开发人员
很不错的帖子啊,收藏了
2008-1-4 08:51 AM#47
查看资料  访问主页  发短消息  QQ  顶部
 
迷茫
新手上路
Rank: 1



UID 100067
精华 0
积分 2
帖子 13
金钱 2 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2007-10-27
状态 离线
[推荐阅读] 乐库网诚聘*高级PHP程序员*
开头注释写的好详细
2008-1-7 10:32 AM#48
查看资料  发短消息  顶部
 
迷茫
新手上路
Rank: 1



UID 100067
精华 0
积分 2
帖子 13
金钱 2 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2007-10-27
状态 离线
[推荐阅读] 同一类商品的进仓和出仓后的总和怎么计算?
阿 没发现后边还有这么多 我顶你~~~
2008-1-7 10:33 AM#49
查看资料  发短消息  顶部
 
LeonGuo
新手上路
Rank: 1


UID 101198
精华 0
积分 41
帖子 34
金钱 41 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2007-11-13
状态 离线
[推荐阅读] 请教ADODB和SMARTY的问题
高手,学习
2008-1-18 12:41 PM#50
查看资料  发短消息  顶部