От вашего комментария,
Я хотел бы иметь отдельный объект завитка в другом классе так в основном 1 класс 1 завиток объекта.
Предположим, у вас есть три класса: MyCurl
, Class1
и Class2
, и вы хотите использовать только один экземпляр MyCurl
в Class1
класса и один экземпляр MyCurl
в Class2
класса раствора будет выглядеть так:
class MyCurl {
private static $curlInstances = array('Class1' => null, 'Class2' => null);
private function __construct(){}
public static function getInstance($class){
if(in_array($class, array_keys(self::$curlInstances))){
if(self::$curlInstances[$class] == null){
self::$curlInstances[$class] = new MyCurl();
}
return self::$curlInstances[$class];
}else{
return false;
}
}
// your code
}
class Class1{
private static $curlInstance;
public static function getCurlInstance() {
if(!isset(self::$curlInstance)){
self::$curlInstance = MyCurl::getInstance(get_class());
}
return self::$curlInstance;
}
// your code
}
class Class2{
private static $curlInstance;
public static function getCurlInstance() {
if(!isset(self::$curlInstance)){
self::$curlInstance = MyCurl::getInstance(get_class());
}
return self::$curlInstance;
}
// your code
}
объяснение приводится ниже:
В MyCurl
класс:
- Создание массива
private static
$curlInstances
. Этот массив будет использоваться для проверки того, был ли объект создан для определенного класса или нет.
- Сделайте свой метод конструктора
private
. Это предотвращает создание объектов из-за пределов класса.
- Создайте метод класса
static
getInstance()
. Сначала он проверяет, был ли этот метод вызван либо из класса Class1
, либо из класса Class2
или нет. Если это так, он проверяет, был ли экземпляр создан для определенного класса или нет. Если объект не был создан, будет создан новый объект, иначе старый метод будет возвращен этим методом.
И Class1
и Class2
класс совершенно такой же.В этих классах:
- Создать
private static
переменная класса $curlInstance
держать экземпляр класса MyCurl
.
- Создайте метод класса
static
getCurlInstance()
, чтобы получить экземпляр класса MyCurl
с использованием шаблона Singleton.
Чтобы получить уникальные MyCurl
экземпляры этих отдельных классов, сделать это:
$class1CurlInstance1 = Class1::getCurlInstance(); // returns only one instance of MyCurl class
$class2CurlInstance1 = Class2::getCurlInstance(); // returns only one instance of MyCurl class
И снова, только ради отладки, выполните следующие действия:
// Both $class1CurlInstance2 and $class2CurlInstance2 will have the same old unique MyCurl instances
$class1CurlInstance2 = Class1::getCurlInstance();
$class2CurlInstance2 = Class2::getCurlInstance();
*. .. Я хотел бы использовать его для двух других классов, но в тех классах я хочу, чтобы myCurl имел только один экземпляр/был статичным, поэтому все объекты этих других классов будут использовать один и тот же скручивание объект. * Исходя из вашего требования, кажется, что вы ищете [Singleton pattern] (http://stackoverflow.com/questions/203336/creating-the-singleton-design-pattern-in-php5). –
Вы можете назначать значения, а не объекты, во время разработки. Время выполнения можно присвоить объекту свойствам, инициализируя класс в конструкторе или на заводе. Единственное другое значение, которое он принимает внутри класса, является константой в классе * same *. –
@ RajdeepPaul Ну, я хотел бы иметь отдельный объект завитки в разных классах, так что в основном 1 объект curl class 1. – Higeath