魏汝垚 发表于 2011-10-19 17:38:57

load一个library是否相当于是new 了一个class的操作

比如说,我有个library 名字叫Hello
Class Hello()
{
public temp;
}
我在controllers里面做load操作
$this->load->library('Hello');
然后修改temp的值,$this->hello->temp = 2;
是否跟下面操作是一样的呢?
$c = new Hello;
c->temp = 2;


如果是一样的话,那么我做两次new的操作,用load->library怎么实现呢?
$c = new Hello;
$a = new Hello;
$c->temp = 2;
$a->temp = 3;

baiyuxiong 发表于 2011-10-20 01:01:25

LOAD后会记录的,再次LOAD时,如果已经LOAD的话就返回上次LOAD的实例

Hex 发表于 2011-10-20 19:25:27

CI 核心是单例模式的,只能实例化一个实例。

~夜行侠~ 发表于 2011-10-21 09:24:12

首先,楼主的Class Hello() ,public temp;都写错了、

~夜行侠~ 发表于 2011-10-21 09:25:24

本帖最后由 ~夜行侠~ 于 2011-10-21 09:29 编辑

其次,我觉得可以这样实现楼主的想法:
<?php

Class Hello
{
public $temp;

public function getInstance()
{
    return new Hello();
}
}

?>

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
* @author icen
* @email icen21@21cn.com
* @date 2011/10/6
* @copyright icen
*/


class Test extends CI_Controller {

    public function __construct(){
      parent::__construct();   
    }

    public function index()
    {
       $this->load->library('hello');
       $hello1=$this->hello->getInstance();
       $hello1->temp=1;      
       print_r($hello1);
      
       $hello2=$this->hello->getInstance();
       $hello2->temp=2;
       print_r($hello2);      

    }
      
}
页: [1]
查看完整版本: load一个library是否相当于是new 了一个class的操作