Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Значения метода
 
 автор: sl1p   (09.01.2009 в 06:38)   письмо автору
 
 

<?
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() ).
Как же быть?:)

  Ответить  
 
 автор: Саня   (09.01.2009 в 11:00)   письмо автору
 
   для: 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 подключится только во время первого объявления.

  Ответить  
 
 автор: sl1p   (09.01.2009 в 11:05)   письмо автору
 
   для: Саня   (09.01.2009 в 11:00)
 

Хм, я только начал осваивать ооп, разве таким боком во всех объектах будет видно этот файл?

  Ответить  
 
 автор: Саня   (09.01.2009 в 11:17)   письмо автору
 
   для: 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";

  Ответить  
 
 автор: sl1p   (09.01.2009 в 11:19)   письмо автору
 
   для: Саня   (09.01.2009 в 11:17)
 

поняль (:
спасибо)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования