最近开了个淘宝店卖手机充值,由于是新店,价格比进价低很多才可能被搜到,太低又会被封掉,结果就是宝贝在正在出售的商品中没有异常,商店中却看不到,也不能下架,关键是没有任何提示,蛋疼。。。

ad下,大家可以来充值 http://showmestyle.taobao.com/

 

刚好看见淘宝也搞开放平台,就去下了php版sdk回来测试,

sdk里面自带了一套php框架,由于工作很忙,再看一套框架很费时间,然后就用了thinkphp的来做

但是thinkphp的第三方类库引入有点问题,只能针对单个文件引入,不能直接包含文件夹,sdk里面的文件还很比较多的,一个个引用不现实。

thinkphp的自动引用是用自定义autoload来做的,

在/ThinkPHP/Lib/Core/Think.class.php文件中的start()函数中定义了下面这句,

// 注册AUTOLOAD方法
spl_autoload_register(array('Think', 'autoload'));

 使用Think类的autoload代替了系统的autoload,我们自需要改下这个函数,给他加上淘宝api的路径神马的就好了

代码如下

    /**
     * 系统自动加载ThinkPHP类库
     * 并且支持配置自动加载路径
     * @param string $class 对象类名
     * @return void
     */
    public static function autoload($class) {
        // 检查是否存在别名定义
        if(alias_import($class)) return ;
        $libPath    =   defined('BASE_LIB_PATH')?BASE_LIB_PATH:LIB_PATH;
        $group      =   defined('GROUP_NAME') && C('APP_GROUP_MODE')==0 ?GROUP_NAME.'/':'';
        $file       =   $class.'.class.php';
        if(substr($class,-8)=='Behavior') { // 加载行为
            if(require_array(array(
                CORE_PATH.'Behavior/'.$file,
                EXTEND_PATH.'Behavior/'.$file,
                LIB_PATH.'Behavior/'.$file,
                $libPath.'Behavior/'.$file),true)
                || (defined('MODE_NAME') && require_cache(MODE_PATH.ucwords(MODE_NAME).'/Behavior/'.$file))) {
                return ;
            }
        }elseif(substr($class,-5)=='Model'){ // 加载模型
            if(require_array(array(
                LIB_PATH.'Model/'.$group.$file,
                $libPath.'Model/'.$file,
                EXTEND_PATH.'Model/'.$file),true)) {
                return ;
            }
        }elseif(substr($class,-6)=='Action'){ // 加载控制器
            if(require_array(array(
                LIB_PATH.'Action/'.$group.$file,
                $libPath.'Action/'.$file,
                EXTEND_PATH.'Action/'.$file),true)) {
                return ;
            }
        }elseif(substr($class,0,5)=='Cache'){ // 加载缓存驱动
            if(require_array(array(
                EXTEND_PATH.'Driver/Cache/'.$file,
                CORE_PATH.'Driver/Cache/'.$file),true)){
                return ;
            }
        }elseif(substr($class,0,2)=='Db'){ // 加载数据库驱动
            if(require_array(array(
                EXTEND_PATH.'Driver/Db/'.$file,
                CORE_PATH.'Driver/Db/'.$file),true)){
                return ;
            }
        }elseif(substr($class,0,8)=='Template'){ // 加载模板引擎驱动
            if(require_array(array(
                EXTEND_PATH.'Driver/Template/'.$file,
                CORE_PATH.'Driver/Template/'.$file),true)){
                return ;
            }
        }elseif(substr($class,0,6)=='TagLib'){ // 加载标签库驱动
            if(require_array(array(
                EXTEND_PATH.'Driver/TagLib/'.$file,
                CORE_PATH.'Driver/TagLib/'.$file),true)) {
                return ;
            }
        }else{
        	//taobao api
        	$class_files = APP_PATH.'/top/'.$class.'.php';
        	$class_files_2 = APP_PATH.'/top/request/'.$class.'.php';
        	if(file_exists($class_files)){
        		require_cache($class_files);
        	}else{
        		require_cache($class_files_2);
        	}
        	return ;
        }

        // 根据自动加载路径设置进行尝试搜索
        $paths  =   explode(',',C('APP_AUTOLOAD_PATH'));
        foreach ($paths as $path){
            if(import($path.'.'.$class))
                // 如果加载类成功则返回
                return ;
        }
    }

如上代码,最后一个else代码块就是我们添加的东西,加上这个后就可以直接new 淘宝sdk里面的类了

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

et_highlighter