`
imjl
  • 浏览: 156308 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

一个static的问题

    博客分类:
  • php
 
阅读更多
static可以放在class,也可以放在function。两者有什么差异。

一般当函数do1,do2都用到 $_arr时,把它作为类变量。
class A{
  static $_arr;
  function do1(){
      
  }

  function do2(){

  }
}


Codeigniter 用在函数load_class, 变量static $_classes = array();

于是在code时发现个问题
class FileManage{

    function install(){
       static $_files;
    }
}
class ModuleManage extends FileManage{}
class DbManage extends FileManage{}

设计想法是用借用$_files把Module和db都管理起来,结果发现不行。
仔细查看后将static $_files 变成类变量就解决问题了。

有兴趣的可以自己写code玩玩看。

框架文件多了,类实例后也很多。所以唯一就显得比较重要。

当然你也可以学习zend framework 的 require_once, set_include_path


现在的filemanage.php

// 文件管理
class CFileManage{
	static $_files;
	
	// 常规install filepath = path.file.".php"
	function install($filetype, $file, $path=''){
		if(is_array($file)) {
			foreach($file as $f){
				$this->_installFile($filetype, $f, $path);
			}
		}elseif(!is_string($file)){
			return;
		}else{
			$this->_installFile($filetype, $file, $path);
		}
	}
	
	function _installFile($filetype, $file, $path=""){
		if(isset(self::$_files[$filetype][$file])){
			// echo "\r\ninstalled $file\r\n";
			return self::$_files[$filetype][$file];
		}
		$filepath = $path . $file . ".php";
		// echo $filepath."\r\n";
		if(!file_exists($filepath)){
			// file not exist
			throw new Exception("not find file:{$filepath}");
		}
		
		global $g_loaded;
		$g_loaded[$filetype][$file] = $filepath;
		self::$_files[$filetype][$file] = include $filepath; 
	}
}
分享到:
评论

相关推荐

    visdom static脚本包

    7. **社区求助**: 如果以上步骤都不能解决问题,可以去 Visdom 的官方GitHub页面查看是否有类似的已知问题,或者提交一个新的问题描述你的情况,寻求开发者和社区的帮助。 Visdom 的使用不仅可以提升你的实验效率...

    C语言static的用法

    - 需要注意保护对`static`变量的访问,避免多个线程同时修改同一个`static`变量导致的数据不一致问题。 4. **与其他语言的区别**: - 在C++中,`static`除了用于变量和函数外,还可以用于类成员。 - C++中`...

    用Static Text控件显示当前系统时间

    1. **创建Static Text控件**:在程序的界面设计阶段,使用`CreateWindowEx`或相关的UI框架(如MFC、Qt、WPF等)创建一个Static Text控件,并为其分配一个特定的ID,以便后续访问。 2. **获取系统时间**:使用`...

    一个简单的static类型的初始化问题

    都知道用static修饰的变量是静态数据,此时变量的地址在静态区存放,因此在函数结束时,该地址中的值不被释放,除非主函数结束。因此每次访问该地址所指向的变量,都会有上次的值。但是会出现一个问题......

    22_static video

    文件名称“22_static两示例_求个数_只生成一个对象__1.avi”可能表明,视频中至少有两个示例来讲解“static”的用法,其中一个可能涉及计算某个对象的数量(可能是指统计类的实例数量),另一个可能讨论如何仅生成一...

    static变量和static函数的用法摘抄

    当一个函数声明为`static`时,它成为内部函数或静态函数,其作用域仅限于定义它的源文件。这意味着其他源文件无法看到或调用这个函数,除非明确声明为`extern`。这样可以避免不同源文件之间的函数命名冲突,提高...

    c语言中static使用方法

    - **关键字static的历史**:在C语言中,`static`关键字最初被引入是为了表示在退出一个块后仍然存在的局部变量。随后,`static`又获得了另一种含义:用来表示不能被其他文件访问的全局变量和函数。尽管如此,为了不...

    C++关键词—static本质

    在C++编程语言中,`static`是一个非常重要的关键字,它具有多种用途,涉及变量、函数和类等不同层面。本文将深入探讨`static`的本质和应用,帮助你更好地理解和运用这一关键特性。 首先,我们要了解`static`修饰符...

    static的使用方法

    // 每创建一个实例,count增加1 } } ``` 2. **静态方法(Static Methods)**: 静态方法同样属于类,不依赖于任何对象实例。这意味着你可以直接通过类名调用静态方法,而无需创建类的对象。静态方法通常用于...

    static.tar.gz

    `static.tar.gz`是一个压缩文件,包含了visdom项目中的`static`目录内容。`static`目录在任何Web应用中都有其特殊的意义,它是存放静态资源如CSS样式表、JavaScript脚本、图片和其他非动态内容的地方。这些文件在...

    docker1.11.0STATIC部署内容

    STATIC部署模式的核心是构建一个静态链接的Docker二进制文件。这意味着Docker不再依赖宿主机上的动态库,而是包含所有必要的依赖项,使得它可以独立于主机环境运行。这种部署方式显著简化了Docker的安装过程,因为...

    C/C++中static,const,inline三种关键字详细总结

    引出原因:函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次...

    c#问题 谁能解释下public static implicit operator float

    `public static implicit operator float(currency value)` 在 C# 中定义了一个隐式类型转换操作符,它允许从自定义类型`currency`隐式转换为`float`类型。这种转换方式可以使代码更加简洁,但在使用时也需要注意...

    Static静态变量的应用(VB6.0代码编写)

    总的来说,Static静态变量是VB6.0编程中一个强大的工具,合理利用可以解决许多实际问题,但同时也需要谨慎处理,以确保代码的健壮性和效率。在实际编程中,我们需要根据具体需求权衡是否使用Static变量,以及如何...

    static 用法

    - 利用生存期的“全局性”,改善“返回一个指向局部对象的指针/引用”的问题。局部对象的问题在于退出函数后,其生存期即结束。利用`static`的作用,可以延长变量的生存期。 **注意事项:** 1. **不可重入性:** ...

    visdom替换文件static.rar

    "visdom蓝屏必须的static文件"就是解决这类问题的关键。 这个压缩包文件"static.rar"包含了Visdom运行所需的静态资源文件。当用户遇到Visdom显示蓝屏的问题时,可能是由于原版Visdom安装中缺少这些静态文件或者文件...

    关于static的说法

    理解和熟练运用`static`与`const`是成为一名高效程序员的重要步骤之一。通过合理利用这些关键字,可以编写出更加健壮、可读性高且易于维护的代码。无论是对于初学者还是有经验的开发人员来说,掌握这些基础知识都是...

    java中static属性学习

    在这个例子中,`myStaticVar`是`MyClass`的一个静态变量,每调用一次`increment()`方法,`myStaticVar`的值都会增加,这个变化对所有`MyClass`的实例都是可见的。 #### Static方法 静态方法是类的方法,可以在没有...

    如何使用Static的变量和方法

    在Java编程语言中,`static`关键字是一个非常重要的概念,用于定义静态成员变量和方法。理解`static`如何工作对于任何Java开发者来说都是必不可少的,尤其是在处理多线程环境、单例模式或者全局共享资源时。 #### ...

    extern和static的详细用法

    当`static`修饰一个函数时,该函数同样只能在其定义的源文件中访问。 ```c++ // file1.c static void func() { // ... } // file2.c // 无法直接调用func() ``` #### 五、总结 通过上述讨论,我们可以总结出`...

Global site tag (gtag.js) - Google Analytics