PHP通过反射方法调用执行类中的私有方法

PHP 5 具有完整的反射 API,添加了对类、接口、函数、方法和扩展进行反向工程的能力。

下面我们演示一下如何通过反射,来调用执行一个类中的私有方法:

<?php

//MyClass这个类中包含了一个名为myFun的私有方法
class MyClass {
    
    private $tmp = 'hello';
    
    private function myFun()
    {
        echo $this->tmp . ' ' . 'world!';
    }
}

//通过类名MyClass进行反射
$ref_class = new ReflectionClass('MyClass');

//通过反射类进行实例化
$instance  = $ref_class->newInstance();

//通过方法名myFun获取指定方法
$method = $ref_class->getmethod('myFun');

//设置可访问性
$method->setAccessible(true);

//执行方法
$method->invoke($instance);
?>

阳光部落原创,更多内容请访问 http://www.sunbloger.com/

在PHP中将图片转换为base64编码的方法

Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。

这里我们分享一个将图片转换为base64编码格式的方法:

<?php
$img = 'test.jpg';
$base64_img = base64EncodeImage($img);

echo '<img src="' . $base64_img . '" />';

function base64EncodeImage ($image_file) {
    $base64_image = '';
    $image_info = getimagesize($image_file);
    $image_data = fread(fopen($image_file, 'r'), filesize($image_file));
    $base64_image = 'data:' . $image_info['mime'] . ';base64,' . chunk_split(base64_encode($image_data));
    return $base64_image;
}
?>

通过上面的方法转换后得到的base64编码字符串,可以存放到数据库中,需要时可以直接从数据库中读取,减少访问图片时的请求数量。

另:这个方法已经包含进MiniFramework的全局函数库中了。

阳光部落原创,更多内容请访问 http://www.sunbloger.com/

关于Memcached对key和value的限制

Memcached中对于键(key)的限制为最大不超过250个字符。同时,对于存储的value最大可以接受的数据不能超过1MB。

我们可以通过修改源代码的方式来改变对于key的长度限制。

方法为:

修改memcached.h文件,找到 #define KEY_MAX_LENGTH 250,将250修改为其他数值,例如:#define KEY_MAX_LENGTH 512

而关于value的1M的限制,可以在启动命令中增加-I 2m这样的参数,就可以将原本1M的限制提升至2M。

转载:Nginx多站点虚拟主机实现独立启动停止php-fpm和权限控制设置

说明:

站点1:bbs.osyunwei.com 程序所在目录/data/osyunwei/bbs

站点2:sns.osyunwei.com 程序所在目录/data/osyunwei/sns

相关配置文件目录:

nginx主配置文件:/usr/local/nginx/conf/nginx.conf

php安装目录:/usr/local/php5/

站点1虚拟主机配置配置文件:/usr/local/nginx/conf/vhost/bbs.conf

站点2虚拟主机配置配置文件:/usr/local/nginx/conf/vhost/sns.conf

实现目的:

1、可以对站点1和站点2单独启动、停止php-fpm

2、站点1和站点2的php运行权限相互隔离,不能跨目录浏览,即站点1内的php木马不能访问站点2中的内容,

同理,站2内的php木马不能访问站点1中的内容。

实现方法:

阅读更多