Mr.KTO blog


  • Рубрики

  • Поиск

  •  
      
  • Поиск
  • реклама на mrkto.com





Вычисления при инициализации свойств класса

Как известно, при инициализации свойств класса мы не можем использовать какие-либо вычисления:

class A {
    var $a = 2*2; // --неверно
    var $b = "st"."r"; // --неверно
    var $c = $_SERVER['REMOTE_ADDR']; // --неверно
}

Однако, есть способ обойти это:

define("A_a", 2*2);
define("A_b", "st"."r");
define("A_c", $_SERVER['REMOTE_ADDR']);

class A {
    var $a = A_a;
    var $b = A_b;
    var $c = A_c;
}

Только что придумал, собснно.

UPD: Это позволяет при наследовании – не заботится о parent::__construct(); в конструкторе потомка. Полезно, если вы и так используете константы для свойств класса (напр. DEFAULT_a, DEFAULT_b)

habrahabr.ru google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru rumarkz.ru memori.ru moemesto.ru moikrug.ru myscoop.ru mister-wong.ru rucity.com vaau.ru

Комментарии (5) на “Вычисления при инициализации свойств класса”

  1. Sam пишет:
    class A {
        public $a = null;
        public $b = null;
        public $c = null;
    
        function __construct(){
          $this->a = 2*2;
          $this->b = "st"."r";
          $this->c = $_SERVER['REMOTE_ADDR'];
        }
    }
  2. mrkto пишет:

    мм да, так я делаю в C++.
    Забыл написать, что это – для наследования – не нужно помнить про parent::__construct();

  3. Sergey пишет:

    брр, хорошо что я мало пишу на ООП php
    p.s. А зачем свойства делать константами?

  4. Marisha пишет:

    Да, нормальная реализация, как я сразу об этом не подумал, приходилось более сложные схемы использовать.

  5. Андрей (К). пишет:

    В принципе все понятно, я все таки остаюсь верен php
    Для меня это тоже вариант. Спасибо за этот пост, весьма полезный

Оставить комментарий