中山php|最优网络中山做网站 中山php建站

最优良人

Posts Tagged With: php

什么是php反射机制以及利用php反射机制实现可插拔可扩展的插件架构

2011/08/26 at 00:06 » Comments (406)

反射是什么? 它是指在PHP运行状态中,扩展分析PHP程序,导出或提取出关于类、方法、属性、参数等的详细信息,包括注释。这种动态获取的信息以及动态调用对象的方法的功能称为反射API。 反射是操纵面向对象范型中元模型的API,其功能十分强大,可帮助我们构建复杂,可扩展的应用。其用途如:自动加载插件,自动生成文档,甚至可用来扩充PHP语言。php反射api由若干类组成,可帮助我们用来访问程序的元数据或者同相关的注释交互。借助反射我们可以获取诸如类实现了那些方法,创建一个类的实例(不同于用new创建),调用一个方法(也不同于常规调用),传递参数,动态调用类的静态方法。 * ** 反射api是php内建的oop技术扩展,包括一些类,异常和接口,综合使用他们可用来帮助我们分析其它类,接口,方法,属性,方法和扩展。这些oop扩展被称为反射,位于php源码/ext/reflection目录下。 可以使用反射api自省反射api本身(这可能就是反射最初的意思,自己"看"自己): <?php Reflection::export(new ReflectionExtension('reflection')); ?> 几乎所有的反射api都实现了reflector接口,所有实现该接口的类都有一个export方法,该方法打印出参数对象的相关信息。 使用get_declared_classes()获取所有php内置类,get_declared_interfaces(); get_defined_functions(); get_defined_vars(); get_defined_constants();可获取php接口,方法,变量,常量信息。 ** *** 反射初探: <?php //定义一个自定义类 class MyTestClass{ public function testFunc($para0='defaultValue0'){ } } //接下来反射它 foreach(get_declared_classes() as $class){ //实例化一个反射类 ...more »

php强制下载文件,避免文件或者图片直接在浏览器打开

2011/08/25 at 15:08 » Comments (10)

以下代码是FLEAPHP框架自带的文件下载助手类 /** * FLEA_Helper_SendFile 类用于向浏览器发送文件 * * 利用 FLEA_Helper_SendFile,应用程序可以将重要的文件保存在 * 浏览器无法访问的位置。然后通过程序将文件内容发送给浏览器。 * * @package Core * @author 起源科技 (www.qeeyuan.com) * @version 1.0 */ class FLEA_Helper_SendFile { /** ...more »

php逐条输出结果到浏览器,实现实时提醒和无刷新提示

2011/08/25 at 14:50 » Comments (280)

php实现字符串逐条输出的原理是利用flush();ob_flush();函数刷新输出缓冲 ob_end_clean(); //清除输出缓存并且关闭缓存 echo str_pad(' ',256);//输出256字节空格(在ie浏览器下要接受大于256个字节才会输出显示 ) for($i=0;$i<5;$i++){ echo '<br/>abc___'.$i; flush(); ob_flush(); sleep(1); } 该方法在opera下不可用,因为opera浏览器在不遇到一个html标签之前是不输出内容的 more »

php在windows主机或虚拟空间利用socket在线发送邮件

2011/08/24 at 23:53 » Comments (2,688)

在linux虚拟主机下一般可以利用php的mail函数直接发邮件 bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] ) 但是在windows虚拟主机下则不能直接使用mail函数,可以通过socket了,采用邮箱的smtp服务在线发送邮件(现在的163免费邮箱一注册就可以免费使用这个服务,并且默认开通的),比较成熟的在线发送邮件类有php_mailer,功能很强大,不过下面介绍的是一个比较简单的socket邮件发送类,应付一般的需求足够了。 使用方法是: require_once (dirname(__FILE__).'/email.class.php');//该类的代码附在文章后面 //########################################## $smtpserver = "smtp.163.com";//SMTP服务器 $smtpserverport =25;//SMTP服务器端口 $smtpusermail = "XXX@163.com";//SMTP服务器的用户邮箱 $smtpemailto = "XXXXX@qq.com";//发送给谁 $smtpuser = ...more »

php时间日期函数date,getdate,strtotime,strftime,strptime,time,mktime,microtime汇总对比

2011/08/19 at 16:56 » Comments (379)

date — 格式化一个本地时间/日期(把时间戳变成文本格式) string date ( string $format [, int $timestamp ] ) timestamp 是可选的,默认值为 time()。 $today = date("H:i:s"); ...more »

php函数体里调用外部变量

2011/08/18 at 21:47 » Comments (26)

在程序开发中,有时在一个函数里面需要调用到函数体以外的变量,这个时候有几种方法 可以再声明变量的时候声明为全局变量,如: global $string; $string = 'test'; function __(){ return $string; } 也可以在函数的内部声明,如: $string = 'test'; function __(){ global $string; return $string; } 当需要调用的变量只有少数的时候可以这样用,那么如果是需要使用大量已经定义过的变量或者甚至是全部变量的时候如何处理呢?可以这样处理,用到PHP的超全局数组$GLOBALS和extract()函数 PHP手册对$GLOBAL的说明是这样的: An associative array containing references to ...more »

php获取远程图片,下载到本地-readfile,file_get_contents函数

2011/08/18 at 14:38 » Comments (16)

php获取远程图片的原理是使用readfile函数读入一个远程文件的stream,然后写入一个文件生成本地图片 注:也可以用file_get_contents函数,二者的区别是readfile直接把文件stream输出,而后者赋给变量。 以下自定义函数可以实现远程图片获取,并自动下载为本地文件: <?php // // Function: 获取远程图片并把它保存到本地 // // // 确定您有把文件写入本地服务器的权限 // // // 变量说明: // $url 是远程图片的完整URL地址,不能为空。 // $filename 是可选变量: 如果为空,本地文件名将基于时间和日期 // 自动生成. function GrabImage($url,$filename="") { if($url==""):return false;endif; if($filename=="") { $ext=strrchr($url,"."); if($ext!=".gif" && $ext!=".jpg"):return false;endif; $filename=date("dMYHis").$ext; } ob_start(); readfile($url); $img = ob_get_contents(); ob_end_clean(); $size = strlen($img); $fp2=@fopen($filename, "a"); fwrite($fp2,$img); fclose($fp2); return $filename; } $img=GrabImage("/Article/UploadFiles/201003/20100313135251414.jpg",""); if($img):echo '<pre><img src="'.$img.'"></pre>'; else:echo "false"; endif; ?> more »

PHP利用header函数实现各种状态的跳转

2011/08/15 at 16:08 » Comments (250)

header实现301永久重定向 Header("HTTP/1.1 301 Moved Permanently"); Header("Location: http://www.zui88.com"); header实现302临时重定向 Header("HTTP/1.1 302 Found"); Header("Location: http://www.zui88.com"); header实现404无法找到页面 Header("HTTP/1.1 404 Not Found"); 一下函数可实现各种状态的跳转: /** * 跳转页面 * * 使用header()进行页面跳转,不显示任何内容.如果不能使用header跳转 * @param string $url * @param int $status */ function goto($url,$status=null) { if(!empty($status)) { $status=intval($status); $codes = array( 100 => "Continue", 101 => "Switching Protocols", 200 ...more »

php正则匹配时常用到的模式修正符

2011/08/15 at 01:19 » Comments (267)

PHP简单的模版引擎主要的原理是使用preg_replace对模板的内容进行替换,替换成可执行的php语句然后写入缓存文本,再include进来执行。 在使用preg_replace时常用到的模式修正符有: e:$replacement 的字符串将被当作php语句执行 U:禁止贪婪匹配 只跟踪到最近的一个匹配符并结束, m:在匹配首内容或者尾内容时候采用多行识别匹配 s:模式中的圆点元字符(.)匹配所有的字符,包括换行 more »

php反斜线引用字符串

2011/08/15 at 01:09 » Comments (19)

addslashes:使用反斜线引用字符串 ,返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线,这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。 stripslashes 相反的操作,或者如果系统自动开启了魔法引号(默认是开启的),如果想得到原来没被转义过的字符串,可以使用此函数 比如在正则的逆向引用中: $find[] = "/<a(.*)href=(\"|')?(\/.*)(\"|'|\s)/Uei"; $replace[] ="stripslashes(str_replace('$','$@&#','$0'));"; 去掉php自动加上的反斜杠 more »