Разбор ООП с Delphinum

26.9K
.
Да и в С# всё так же:
using System;

public class A
{
	private String value;
	
	public A(String value)
	{
		this.value = value;
	}
	
	public void Method(A otherA)
	{
		Console.WriteLine(this.value + " " + otherA.value);
	}
}
					
public class Program
{
	public static void Main()
	{
		A a1 = new A("OLOLO");
		A a2 = new A("TROLOLO");
		
		a1.Method(a2);
	}
}
.
L!MP, по всей видимости проверка доступа всегда выполняется на уровне класса. Если метод принадлежит тому же классу, что и экземпляр, то доступ разрешается. Если бы так не было, то при наследовании методы родительского класса теряли бы доступ к приватным свойством этого же класса, так как вызывались бы на уровне дочернего объекта
.
Delphinum, ну да, получается что так. Хотя мне сначала казалось что это какой-то фундаментальный косяк именно РНР.
.
L!MP, ну вообще это довольно полезный косяк, не нарушающий инкапсуляцию
.
Delphinum, ну выходит что это и не косяк вовсе. Как он о там, один раз случайность (РНР), два раза - тенденция (JAVA), три раза - закономерность (С#)
.
╭∩╮ (`-`) ╭∩╮
# L!MP (09.12.2016 / 19:48)
Delphinum, ну выходит что это и не косяк вовсе. Как он о там, один раз случайность (РНР), два раза - тенденция (JAVA), три раза - закономерность (С#)
Да, теперь вижу.
Это походу и не косяк, а специальная возможность обращаться к приватным свойствам своих копий как к самому себе... Никогда этим не пользовался, но раз пишешь, значит возможность есть.
.
Хм, чет не могу понять почему такой код начинает работать бесконечно
$iterator = new SplFileObject(__FILE__);
var_dump(iterator_count($iterator));

По сути же должно подсчитать количество элементов в итераторе и показать.
.
(\/)____o_O____(\/)
Jahak, потому что итератор ресурс
.
Jahak
Koenig, Итератор это итератор и ничем другим он не может быть по моему.
$iterator = new SplFileObject(__FILE__);
var_dump(
    is_resource($iterator), // bool(false)
    $iterator instanceof Traversable, // bool(true)
    $iterator instanceof Iterator // bool(true)
);
.
(\/)____o_O____(\/)
Jahak, но этот итератор тебя так не покажет количество строк или символов
Всего: 713