上篇帖子没人气了,要问的问题没解决(估计没表达清楚)先来2个类,这2个类主要是源数据的来源途径不同Test1类class test1{
protected $arr = array();
function __construct($arr){
$this->arr = $arr;
}
function t1(){
//use $this->arr
}
function t2(){
//use $this->arr
}
}
Test2类class test2{
function get_arr(){
//get $arr from data
return $arr;
}
function t1(){
//use $this->get_arr())
}
function t2(){
//use $this->get_arr()
}
}
这2个类的区别就是得到源数据途径的区别
test1 是直接存在类属性中,初始化获取
test2 是通过get_arr函数从文件中获得现在的问题是,
一:如果都调用一个类中函数(如 t1),test1类除了源数据$arr比test2进来得比较早(test1初始化时源数据$arr就有了,而test2是需要调用get_arr才能得到初始化数据$arr)外还有什么差别(只效率与内存上)?二:这个主要的,就是如果一个页面都调用了t1和t2,test1类的arr数据应该只存在一份,test2的数据调用了2次get_arr,是否在内存中存在两个$arr数组???如果是这样的话是不是就放在类属性中比较好了?上一个帖子的地址
protected $arr = array();
function __construct($arr){
$this->arr = $arr;
}
function t1(){
//use $this->arr
}
function t2(){
//use $this->arr
}
}
Test2类class test2{
function get_arr(){
//get $arr from data
return $arr;
}
function t1(){
//use $this->get_arr())
}
function t2(){
//use $this->get_arr()
}
}
这2个类的区别就是得到源数据途径的区别
test1 是直接存在类属性中,初始化获取
test2 是通过get_arr函数从文件中获得现在的问题是,
一:如果都调用一个类中函数(如 t1),test1类除了源数据$arr比test2进来得比较早(test1初始化时源数据$arr就有了,而test2是需要调用get_arr才能得到初始化数据$arr)外还有什么差别(只效率与内存上)?二:这个主要的,就是如果一个页面都调用了t1和t2,test1类的arr数据应该只存在一份,test2的数据调用了2次get_arr,是否在内存中存在两个$arr数组???如果是这样的话是不是就放在类属性中比较好了?上一个帖子的地址
类似test1方式,
function t(&$arr) ,就是为了避免大数据copy时候的写法。php设计还是相当巧妙的
请问一下php 定义一个数组是存放在 堆内存还是 栈内存, 在其他语言里 给数组开辟堆内存空间是固定的,但是php可以无限+,所以想问下区别
这样就没啥区别了。
class test2{
public static $data = array();
function get_arr(){
if(self::$data) return self::$data;
//get $arr from data
return $arr;
}
function t1(){
//use $this->get_arr())
}
function t2(){
//use $this->get_arr()
}
}
protected $arr = array();
function __construct(){
$this->arr = get_arr();
}
function get_arr(){
//get $arr from data
return $arr;
}
function t1(){
//use $this->arr
}
function t2(){
//use $this->arr
}
}
类使用的数据是有约定的,不可能随便传个数据都能正常工作
处理外部数据是有一定开销的,况且外部数据可能还需要加工一下。单独写个方法可以更灵和
如果程序中多出使用该类,又不方便传递实例时,应考虑单例模式