提问:对外的 PHP 类库,如何拥有自己的命名空间, 同时又不破坏所在项目的命令空间风格?
解决方案:
1、首先得学习一下 php函数 spl_autoload_register(),详情查看:PHP中spl_autoload_register()函数的用法;
2、在 PHP类库文件夹的根目录下,增加一个 autoload.php 文件,内容参考如下:
提问:对外的 PHP 类库,如何拥有自己的命名空间, 同时又不破坏所在项目的命令空间风格?
解决方案:
1、首先得学习一下 php函数 spl_autoload_register(),详情查看:PHP中spl_autoload_register()函数的用法;
2、在 PHP类库文件夹的根目录下,增加一个 autoload.php 文件,内容参考如下:
后台往往需要导出各种数据到 Excel文档中。通常我们是导出 .csv文件格式,PHP导出函数参考代码如下:
/**
* 导出数据到CSV文件
*
* @param array $data 二维数组(模拟数据表记录)
* @param array $titleList 标题数组列表
* @param string $fileName CSV文件名
*/
function csv_export(&$data, $titleList = array(), $fileName = '')
对TCP/IP、UDP、Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵。那么我想问:
在PHP5.3以后引入了延迟静态绑定。看下面这段代码:
<?php class A { public static function who() { echo __CLASS__; } public static function test() { self::who(); } } class B extends A { public static function who() { echo __CLASS__; } } B::test(); ?>
上面的代码输出了A,但是我希望它输出B,这就是问题的所在。这也是self和__CLASS__的限制。使用self::或者 __CLASS__对当前类的静态引用,取决于定义当前方法所在的类。所以,这就很好的解释了为什么上面的代码输出了A。但是,如果我们需要输出B呢?
今天用rtrim()函数时遇到了一个奇怪的问题:
echo rtrim('</div>', '</div>'); // 输出为 <p echo ltrim('www.cnblogs.com','www.'); // 输出为 cnblogs.com
以上的输出结果有点出人意料,本来我想第一行应该输出
,第二行会输出cnblogs.com。
1、十进制转二进制 decbin() 函数,如下实例
echo decbin(12); // 输出 1100 echo decbin(26); // 输出 11010
decbin -- 十进制转换为二进制
说明
string decbin ( int number )
返回一字符串,包含有给定 number 参数的二进制表示。所能转换的最大数值为十进制的 4294967295,其结果为 32 个 1 的字符串。
array_walk 有个原生递归函数 array_walk_recursive($arr, 'function', 'words'),但是 array_map 却没有对应的递归函数 array_map_recursive,我们可以自定义一个:
PHP的unset()函数用来清除、销毁变量,不用的变量,我们可以用unset()将它销毁。但是某些时候,用unset()却无法达到销毁变量占用的内存!我们先看一个例子:
<?php $s = str_repeat('1',255); //产生由255个1组成的字符串 $m = memory_get_usage(); //获取当前占用内存 unset($s); $mm = memory_get_usage(); //unset()后再查看当前占用内存 echo $m-$mm; ?>
数组是PHP的灵魂,非常强大,但有时候面向对象编程也是挺方便的,数组 与 对象 之间切换也是常有的事:
/** * 数组 转 对象 * * @param array $arr 数组 * @return object */ function array_to_object($arr) { if (gettype($arr) != 'array') { return; } foreach ($arr as $k => $v) { if (gettype($v) == 'array' || getType($v) == 'object') { $arr[$k] = (object)array_to_object($v); } } return (object)$arr; } /** * 对象 转 数组 * * @param object $obj 对象 * @return array */ function object_to_array($obj) { $obj = (array)$obj; foreach ($obj as $k => $v) { if (gettype($v) == 'resource') { return; } if (gettype($v) == 'object' || gettype($v) == 'array') { $obj[$k] = (array)object_to_array($v); } } return $obj; }