|
|
|
|
<?
class User {
private $config;
private $language;
private $currency;
public function __construct($_web = array(), $_lang = array(), $curr = array()) {
if(!sizeof($_web)) require('inc/config.inc');
$this->config = $_web;
if(!sizeof($_lang)) require('inc/lang/' . $this->getProperty('language') . '.inc');
$this->language = $_lang;
$this->currency = !sizeof($curr) ? getCurrency() : $curr;
}
}
|
<?
$obj = new User(array(), $_lang, $_curr);
|
Вот не пойму, хотел сделать так чтобы лишний раз не нагружать скрипт инклюдами и возможностью передавать параметр если тот где-то уже был подключен на странице, то есть допустим у меня нет первого значения($_web) я его пропускаю и даю возможность скрипту самому подключить недостающий файл с массивом, и дальше уже объявляю массивы которые есть. Но они почему-то игнорируются(подключаются уже в самом классе) после того как я пропустил первый параметр указав просто ( array() ).
Как же быть?:) | |
|
|
|
|
|
|
|
для: sl1p
(09.01.2009 в 06:38)
| | Обычно делают так:
<?
class User {
protected static $loaded = array();
public function __construct() {
if ( !in_array("config", $this->loaded) ) {
require("inc/config.inc");
$this->loaded[] = "config";
}
}
}
|
Сколько бы ни было объявлено экземпляров этого класса, config.inc подключится только во время первого объявления. | |
|
|
|
|
|
|
|
для: Саня
(09.01.2009 в 11:00)
| | Хм, я только начал осваивать ооп, разве таким боком во всех объектах будет видно этот файл? | |
|
|
|
|
|
|
|
для: sl1p
(09.01.2009 в 11:05)
| | Статическая переменная одна на все экземпляры класса, сколько бы их ни было.
<?
class User {
protected static $test = 1;
public function set($var) {
self::$test = $var;
}
public function get() {
return self::$test;
}
}
$user = new User;
$user->set(2);
print $user->get(); // 2
$u = new User;
print $u->get(); // тоже 2
|
В моём предыдущем примере ошибка. Нужно было написать self::$loaded[] = "config"; | |
|
|
|
|
|
|
|
для: Саня
(09.01.2009 в 11:17)
| | поняль (:
спасибо) | |
|
|
|