PHP类的自动载入机制,__autoload()函数
[ 2017-02-16 09:16:55 | 作者: admin ]
php的自动加载:
在php5以前,我们要用某个类或类的方法,那必须include或者require,之后才能使用,每次用一个类,都需要写一条include,麻烦
php作者想简单点,最好能引用一个类时,如果当前没有include进来,系统能自动去找到该类,自动引进~
于是:__autoload()函数应运而生。
通常放在应用程序入口类里面,比如discuz中,放在class_core.php中。
先讲浅显的例子:
第一种情况:文件A.php中内容如下
<?php
class A{
public function __construct(){
echo 'fff';
}
}
?>
文件C.php 中内容如下:
阅读全文…
在php5以前,我们要用某个类或类的方法,那必须include或者require,之后才能使用,每次用一个类,都需要写一条include,麻烦
php作者想简单点,最好能引用一个类时,如果当前没有include进来,系统能自动去找到该类,自动引进~
于是:__autoload()函数应运而生。
通常放在应用程序入口类里面,比如discuz中,放在class_core.php中。
先讲浅显的例子:
第一种情况:文件A.php中内容如下
<?php
class A{
public function __construct(){
echo 'fff';
}
}
?>
文件C.php 中内容如下:
<?php
function __autoload($class)
...function __autoload($class)
阅读全文…
SPL spl_autoload_register 初体验 ,重写类的声明函数autoload自动载入机制(转)
[ 2017-02-16 09:11:57 | 作者: admin ]
网上关于SPL spl_autoload_register的用法的例子有很多很多,自己也查看了很多,但感觉介绍得并不太详细,使自己真正能明白其中的原理苦闷了好一会儿。现将自己的理解记录下来。
关于 Standard PHP Library (SPL) 的 autoload 的方法,这些都是 PHP 5.1.2 之后才加上的方法。为了方便,这里做了一些设定。假设你有类文件,放在/home/user/class/foo.class.php, 你当前的文件为/home/user/webroot/test.php, 示例代码如下。
在文件test.php中:
阅读全文…
关于 Standard PHP Library (SPL) 的 autoload 的方法,这些都是 PHP 5.1.2 之后才加上的方法。为了方便,这里做了一些设定。假设你有类文件,放在/home/user/class/foo.class.php, 你当前的文件为/home/user/webroot/test.php, 示例代码如下。
在文件test.php中:
<?php
class autoload
{
public static function load( $class name )
{
$filename = "/home/user/class/".$classname."class.php";
...class autoload
{
public static function load( $class name )
{
$filename = "/home/user/class/".$classname."class.php";
阅读全文…
phpmyadmin经常自动退出的问题,session引起的问题,以及auth_type参数说明
[ 2016-12-28 10:49:28 | 作者: admin ]
由于session使用了memcache,造成phpmyadmin经常出现不稳定的现象,表现为进入后数秒可能退出重新登录又可以了。
p.s. 发现把phpmyadmin改为 auth_type参数的值修改为 http 就可以了
参考:
$cfg['Servers'][$i]['auth_type'] string ['HTTP'|'http'|'cookie'|'config'|'signon']
Whether config or cookie or HTTP or signon authentication should be used for this server.
#注释:auth_type可选的参数有:http,cookie,config,signon
'config...
阅读全文…
p.s. 发现把phpmyadmin改为 auth_type参数的值修改为 http 就可以了
参考:
$cfg['Servers'][$i]['auth_type'] string ['HTTP'|'http'|'cookie'|'config'|'signon']
Whether config or cookie or HTTP or signon authentication should be used for this server.
#注释:auth_type可选的参数有:http,cookie,config,signon
'config...
阅读全文…
php dirname(__FILE__) 获取当前文件的绝对路径
[ 2016-12-20 13:09:09 | 作者: admin ]
dirname(__FILE__) 取到的是当前文件的绝对路径,也就是说,比起相对路径,查找速度是最快的。
比如当前文件是放在(d:\www\)下,文件名是test.php。
测试的代码如下:
使用方法提示,
dirname(__FILE__) 取到的是当前文件的绝对路径,也就是说,比起相对路径,查找速度是最快的。
如果重复一次可以把目录往上提升一个层次:
比如:$d = dirname(dirname(__FILE__));
...
阅读全文…
比如当前文件是放在(d:\www\)下,文件名是test.php。
测试的代码如下:
<?php
echo __FILE__ ; // 取得当前文件的绝对地址,结果:D:\www\test.php
echo dirname(__FILE__); // 取得当前文件所在的绝对目录,结果:D:\www\
echo dirname(dirname(__FILE__)); //取得当前文件的上一层目录名,结果:D:\
?>
echo __FILE__ ; // 取得当前文件的绝对地址,结果:D:\www\test.php
echo dirname(__FILE__); // 取得当前文件所在的绝对目录,结果:D:\www\
echo dirname(dirname(__FILE__)); //取得当前文件的上一层目录名,结果:D:\
?>
使用方法提示,
dirname(__FILE__) 取到的是当前文件的绝对路径,也就是说,比起相对路径,查找速度是最快的。
如果重复一次可以把目录往上提升一个层次:
比如:$d = dirname(dirname(__FILE__));
...
阅读全文…
PHP解析URL并得到URL中的参数
[ 2016-11-15 12:20:57 | 作者: admin ]
代码会解释 "PHP解析URL并得到URL中的参数" 这句话~ ^_^
阅读全文…
<?php
//例举一个URL格式的字符串:
$str = 'http://test.com/testdir/index.php?param1=10¶m2=20¶m3=30¶m4=40¶m5=50¶m6=60';
//1.0 用parse_url解析URL,此处是$str
$arr = parse_url($str);
var_dump($arr);
//2.0 将URL中的参数取出来放到数组里
$arr_query = convertUrlQuery($arr['query']);
var_dump($arr_query);
//3.0 将 参数数组 再变回 字符串形式的参数格式
var_dump(getUrlQuery($arr_query));
...//例举一个URL格式的字符串:
$str = 'http://test.com/testdir/index.php?param1=10¶m2=20¶m3=30¶m4=40¶m5=50¶m6=60';
//1.0 用parse_url解析URL,此处是$str
$arr = parse_url($str);
var_dump($arr);
//2.0 将URL中的参数取出来放到数组里
$arr_query = convertUrlQuery($arr['query']);
var_dump($arr_query);
//3.0 将 参数数组 再变回 字符串形式的参数格式
var_dump(getUrlQuery($arr_query));
阅读全文…
阿里提示Discuz uc.key泄露导致代码注入漏洞的解决方法
[ 2016-08-27 16:01:59 | 作者: admin ]
这几天看到很多人问discuz uc.key 泄露导致代码注入漏洞uc.php的解决方法,也看了最近大家提供的一些解决方案,对比文件后发现最新版本的uc.php已经修复了大家说的问题,但阿里云一样有相关的提示,下面提供下相关的修改说明,大家可以试试看
首先找到这个文件/api/uc.php
第一处修改
阅读全文…
首先找到这个文件/api/uc.php
第一处修改
if(!API_UPDATEBADWORDS) {
return API_RETURN_FORBIDDEN;
}
$data = array();
if(is_array($post)) {
foreach($post as $k => $v) {
//dz uc-key修改开始
...return API_RETURN_FORBIDDEN;
}
$data = array();
if(is_array($post)) {
foreach($post as $k => $v) {
//dz uc-key修改开始
阅读全文…
Windows 2003设置PHP扩展支持OpenSSL的解决方法 服务器发送邮件
[ 2016-08-17 09:38:27 | 作者: admin ]
以下就是Windows 2003 + IIS 下,如何在PHP扩展里打开openssl支持的方法:
1、在c:\windows\php.ini中
将;extension=php_openssl.dll前面分号(注释)去掉
2、复制php安装目录中的以下2个文件:
libeay32.dll
ssleay32.dll
复制到 C:\windows\system32
3、复制PHP\ext目录中的 php_openssl.dll 至 C:\windows\system32
4、重启IIS
=====================================================
isapi方式需要指定变量 PATH 和 PHPRC
遇到问题:如果没有生效,首先看php.ini是否成功加载,在phpinfo()中看 Configuration File (php.ini) Path (none)
...
阅读全文…
1、在c:\windows\php.ini中
将;extension=php_openssl.dll前面分号(注释)去掉
2、复制php安装目录中的以下2个文件:
libeay32.dll
ssleay32.dll
复制到 C:\windows\system32
3、复制PHP\ext目录中的 php_openssl.dll 至 C:\windows\system32
4、重启IIS
=====================================================
isapi方式需要指定变量 PATH 和 PHPRC
遇到问题:如果没有生效,首先看php.ini是否成功加载,在phpinfo()中看 Configuration File (php.ini) Path (none)
...
阅读全文…
php使用 memcache 来存储 session
[ 2016-07-25 16:28:40 | 作者: admin ]
Memcache和PHP memcach扩展安装请见http://koda.iteye.com/blog/665761
设置session用memcache来存储
方法I: 在 php.ini 中全局设置
Php.ini代码 收藏代码
方法II: 某个目录下的 .htaccess
Php.ini代码 收藏代码
...
阅读全文…
设置session用memcache来存储
方法I: 在 php.ini 中全局设置
Php.ini代码 收藏代码
session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"
session.save_path = "tcp://127.0.0.1:11211"
方法II: 某个目录下的 .htaccess
Php.ini代码 收藏代码
php_value session.save_handler "memcache"
php_value session.save_path "tcp://127.0.0.1:11211"
php_value session.save_path "tcp://127.0.0.1:11211"
...
阅读全文…