利用php自带的函数自动加载类

2016年03月03日 | 1605

利用php自带的函数自动加载类,如下是我在用qrcode时看到很多类,后面弄了个自动加载类,所有代码如下,欢迎参考
header('Content-type:text/html;charset=utf-8');
/*include_once('qrcode/QRcode.php');
include_once('qrcode/QRencode.php');
include_once('qrcode/QRinput.php');
include_once('qrcode/QRinput.php');
include_once('qrcode/QRsplit.php');
include_once('qrcode/QRspec.php');
include_once('qrcode/QRinputItem.php');
include_once('qrcode/QRrawcode.php');
include_once('qrcode/QRbitstream.php');
include_once('qrcode/QRrs.php');
include_once('qrcode/QRrsItem.php');
include_once('qrcode/QRrsblock.php');
include_once('qrcode/QRtools.php');
include_once('qrcode/QRstr.php');
include_once('qrcode/FrameFiller.php');
include_once('qrcode/QRmask.php');
include_once('qrcode/QRimage.php');*/


//echo  get_include_path();exit;
/*程序自动加载类函数*/
function __autoload($class_name){
$wei_xin_str = 'weixin_qrcode_';
if(strpos($class_name,$wei_xin_str) !==false ){
// 在所有版本的 PHP 中均可用
//ini_set ( 'include_path' ,  '/usr/lib/pear' );
//get_include_path — 获取当前的 include_path 配置选项
//set_include_path — 设置 include_path 配置选项   restore_include_path — 还原 include_path 配置选项的值
set_include_path('qrcode' . PATH_SEPARATOR . get_include_path());
//上面 or include 'qrcode/'.str_replace('weixin_qrcode_','',$class_name).'.php';
$path = str_replace('weixin_qrcode_','',$class_name).'.php';
return include_once $path;
}else{
exit('no file');
}
}
/*
*/
/*
* 方法2:
* (PHP 5 >= 5.1.2)
function  my_autoloader ( $class_name ) {
$wei_xin_str = 'weixin_qrcode_';
if(strpos($class_name,$wei_xin_str) !==false ){
//include 'qrcode/'.str_replace('weixin_qrcode_','',$class_name).'.php';
$path = 'qrcode/'.str_replace('weixin_qrcode_','',$class_name).'.php';
return include_once $path;
}else{
exit('no file');
}
}
spl_autoload_register ( 'my_autoloader' );
*/
/*
* 方法3
* // 或者,自 PHP 5.3.0 起可以使用一个匿名函数
* spl_autoload_register(function ( $class_name ) {
$wei_xin_str = 'weixin_qrcode_';
if(strpos($class_name,$wei_xin_str) !==false ){
//include 'qrcode/'.str_replace('weixin_qrcode_','',$class_name).'.php';
$path = 'qrcode/'.str_replace('weixin_qrcode_','',$class_name).'.php';
return include_once $path;
}else{
exit('no file');
}
});*/

$num = 1;
$web_obj = new web;
$web_obj->make_qrcode($num);
class web{
function __construct(){
}

function make_qrcode($id){
header("Cache-Control: no-cache");
$gen_url = 'http://www.sasa.com/wap/account/register?admin_str=hi'.$id;
$errorCorrectionLevel = 'L'; //L M Q H
$matrixPointSize = 6;//大小
//$filename = false;//表示只输出图片
$logo = 'https://ss0.bdstatic.com/-0U0bnSm1A5BphGlnYG/tam-ogel/3b24e108fab5a2a5a0dddf17d1c82bcb_121_121.jpg';
$qrcode_img = 'admin_qrcode.png';//已经生成的原始二维码图
weixin_qrcode_QRcode::png($gen_url, $qrcode_img, $errorCorrectionLevel, $matrixPointSize, 2);
if ($logo !== FALSE) {
$qrcode_img = imagecreatefromstring(file_get_contents($qrcode_img));
$logo = imagecreatefromstring(file_get_contents($logo));
$qrcode_img_width = imagesx($qrcode_img);//二维码图片宽度
$qrcode_img_height = imagesy($qrcode_img);//二维码图片高度
$logo_width = imagesx($logo);//logo图片宽度
$logo_height = imagesy($logo);//logo图片高度
$logo_qr_width = $qrcode_img_width / 5;
$scale = $logo_width/$logo_qr_width;
$logo_qr_height = $logo_height/$scale;
$from_width = ($qrcode_img_width - $logo_qr_width) / 2;
//重新组合图片并调整大小
imagecopyresampled($qrcode_img, $logo, $from_width, $from_width, 0, 0, $logo_qr_width,$logo_qr_height, $logo_width, $logo_height);
}
//imagedestroy($qrcode_img);
//return $qrcode_img;
//输出图片
//$new_filename = 'new_qrcode.png';
//imagepng($qrcode_img, $new_filename);
//echo '';
/*下面是直接输出图片 */
Header("Content-type: image/png");
ImagePng($qrcode_img);
//echo $img;
//$url = kernel::base_url(1).'/'.$imageData['url'];
//echo file_get_contents($url);
exit;
}
}


?>