• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于 php静态变量的问题

php 搞代码 4年前 (2022-01-25) 15次浏览 已收录 0个评论
文章目录[隐藏]

今天想学习一下 phpcms, 然后就看了一下源代码,但是在 看 _load_class 这个方法的时候有点疑问。

<code>/**     * 加载类文件函数     * @param string $classname 类名     * @param string $path 扩展地址     * @param intger $initialize 是否初始化     */    private static function _load_class($classname, $path = '', $initialize = 1) {        static $classes = array();        if (empty($path)) $path = 'libs'.DIRECTORY_SEPARATOR.'classes';        $key = md5($path.$classname);        if (isset($classes[$key])) {            if (!empty($classes[$key])) {                return $classes[$key];            } else {                return true;            }        }        if (file_exists(PC_PATH.$path.DIRECTORY_SEPARATOR.$classname.'.class.php')) {            include PC_PATH.$path.DIRECTORY_SEPARATOR.$classname.'.class.php';            $name = $classname;            if ($my_path = self::my_path(PC_PATH.$path.DIRECTORY_SEPARATOR.$classname.'.class.php')) {                include $my_path;                $name = 'MY_'.$classname;            }            if ($initialize) {                $classes[$key] = new $name;            } else {                $classes[$key] = true;            }            <b>6本文来源gao@dai!ma.com搞$代^码!网7</b><pre>搞gaodaima代码

return $classes[$key]; } else { return false; } }

static $classes = array(); 如果没有加上static 属性的话就是申明了一个空数组,是不是加上 static之后,第多次调用之后这个数组的值其实是上一次改变之后的值?我没明白他是如何将值存入这个$classes 数组里面的,求解。或者有熟悉的朋友讲解一下phpcms怎么实现调用类和函数的。不胜感激!

回复内容:

今天想学习一下 phpcms, 然后就看了一下源代码,但是在 看 _load_class 这个方法的时候有点疑问。

<code>/**     * 加载类文件函数     * @param string $classname 类名     * @param string $path 扩展地址     * @param intger $initialize 是否初始化     */    private static function _load_class($classname, $path = '', $initialize = 1) {        static $classes = array();        if (empty($path)) $path = 'libs'.DIRECTORY_SEPARATOR.'classes';        $key = md5($path.$classname);        if (isset($classes[$key])) {            if (!empty($classes[$key])) {                return $classes[$key];            } else {                return true;            }        }        if (file_exists(PC_PATH.$path.DIRECTORY_SEPARATOR.$classname.'.class.php')) {            include PC_PATH.$path.DIRECTORY_SEPARATOR.$classname.'.class.php';            $name = $classname;            if ($my_path = self::my_path(PC_PATH.$path.DIRECTORY_SEPARATOR.$classname.'.class.php')) {                include $my_path;                $name = 'MY_'.$classname;            }            if ($initialize) {                $classes[$key] = new $name;            } else {                $classes[$key] = true;            }            return $classes[$key];        } else {            return false;        }    }</code>

static $classes = array(); 如果没有加上static 属性的话就是申明了一个空数组,是不是加上 static之后,第多次调用之后这个数组的值其实是上一次改变之后的值?我没明白他是如何将值存入这个$classes 数组里面的,求解。或者有熟悉的朋友讲解一下phpcms怎么实现调用类和函数的。不胜感激!

第一次调用,static $classes = array() 初始化$classes静态变量后,在内存中就有一个地址(假设为0x123),只要php脚本没有终止,下次再调用static $classes = array()并不会再次初始化$classes;之后对$classes所有操作都是对这个地址(0x123)操作;


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于 php静态变量的问题
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址