Разбор ООП с Delphinum

29.48K
.
(\/)____o_O____(\/)

Delphinum, А не прокатит такая штука, как с функцией,
http://php.net/manual/ru/funct ... -list

.

Koenig, нет, если набор аргументов совсем разный, то получится каша

.

РНР без разницы на то, что обращение к приватному члену класса идет от другого экземпляра этого класса, главное чтоб оно было изнутри.

Я тоже сильно удивился этому когда обнаружил, думал что это очередной косяк реализации.

.

L!MP, видимо инкапсуляция вяжется на уровне класса, а не экземпляров

.
╭∩╮ (`-`) ╭∩╮
# L!MP (09.12.2016 / 18:02)
РНР без разницы на то, что обращение к приватному члену класса идет от другого экземпляра этого класса, главное чтоб оно было изнутри.

Я тоже сильно удивился этому когда обнаружил, думал что это оч
Че то ты батенька намудрил...
Буду благодарен, если покажешь пример кода, где ты смог обратиться к "приватному члену класса от другого экземпляра этого класса"...
Я до сих пор знал, что подобное невозможно, к приватному члену нельзя обратиться даже из потомка...
.

AlkatraZ, есть такая магия:

class My{
  private $a;

  public function __construct($a){
    $this->a = $a;
  }

  public function copy(My $obj){
    $this->a = $obj->a;
  }

  public function getA(){
    return $this->a;
  }
}

$a = new My(1);
$b = new My(2);
$b->copy($a);
echo $b->getA(); // 1
.
L!MP

AlkatraZ, ну вот, на пример:

class A
{
    private $value;
    
    public function __construct($value)
    {
        $this->value = $value;
    }
    
    public function method(A $otherA)
    {
        return "{$this->value} {$otherA->value}"; // вот мы обращаемся к приватному свойству другого экземпляра класса
    }
}

$a1 = new A('OLOLO');
$a2 = new A('TROLOLO');

echo $a1->method($a2); //=> OLOLO TROLOLO
.
L!MP

Delphinum, в яве или с# так можно сделать?
====
Да, можно:

class A {
    private String value;
    public A(String value) {
        this.value = value;
    }
    public void method(A otherA) {
        System.out.println(this.value + " " + otherA.value);
    }
}

class Playground {
    public static void main(String[ ] args) {
        A a1 = new A("OLOLO");
        A a2 = new A("TROLOLO");
        
        a1.method(a2);
    }
}

Результат тот же.
.

L!MP, на счет c# не знаю, я на нем не пишу, а вот по поводу java, хороший вопрос... Никогда не задавался им раньше, щас уточню у знакомых жавистов

.

Да, в яве тоже можно так делать

Всего: 713