ООП на php. Практика

Vano

Новичок
та да... Но я сейчас не об этом) А кстате, заметил, что абстрактный класс не может имплементировать интерфейс. Если попробывать
PHP:
class A extends B
{
}

abstract class B implements C
{
}

interface C
{
}
Выдает ошибку class B not found
 

Vano

Новичок
хочу чтоб все аттрибуты были приватными у обоих классов, а данные будем вводить через метод exchangeArray( array $array );
к примеру так
PHP:
$map = new Map;
$map->exchangeArray( array('scale' => 1000, 'country' => "Ukraine", 'mapType' => "political") )
заодно можно написать interface с этим методом и сказать что твои классы его имплементируют.
В общем, на все что я сказал можна не обращать внимания. Жду дальнейших указаний. И спасибо за то, что я хотябы понял уже наконец, что такое Абстрактный класс( хотябы с теоретической точки зрения ).
 

Redjik

Джедай-мастер
Лол, местами поменяй


PHP:
abstract class B implements C
{
}

interface C
{
}

class A extends B
{
}
 

Vano

Новичок
из всего этого говна ООП у тебя лишь в одном месте просматривается
А тогда подскажите как лучше тесты писать - програмкой или в уме( в комментариях написать)? Если програмкой, то посоветуйте какой пользуетесь.
 

Redjik

Джедай-мастер
для функции нет, для класса тоже нет, если автолодер настроен
 

WMix

герр M:)ller
Партнер клуба
Я догадиваюсь что нужен абстрактный класс, в котором будет реализован этот метод, которого будут наследовать Map and Human.
нет, я предлагаю посмотреть на все несколько с другой стороны. есть 2 совершенно различных класса, но они имеют нечто общее одинаковый метод. более того один тип

на секунду забудь все что ты написал, оно хорошо только для представления.

итак, хочу иметь некий класс, с методом принимающим первым аргументом любой обьект класса имплементирующего ForClasses, и вторым некий массив.
public function exchange( ForClasses obj, array $arr ); внутри метода вызывается exchangeArray для указанного обьекта
 

Vano

Новичок
\
нет, я предлагаю посмотреть на все несколько с другой стороны. есть 2 совершенно различных класса, но они имеют нечто общее одинаковый метод. более того один тип
да да, я так и думал что нужно забыть все что я сказал)
 

Vano

Новичок
итак, хочу иметь некий класс, с методом принимающим первым аргументом любой обьект класса имплементирующего ForClasses, и вторым некий массив.
public function exchange( ForClasses obj, array $arr ); внутри метода вызывается exchangeArray для указанного обьекта
Добавил класс Intersect
PHP:
/** class Intersect **/
class Intersect
{
   
    public function exchange( ForClasses $obj, array $arr )
    {
       
        $obj->exchangeArray($arr);
       
    }
   
}
И присваиваю свойства теперь так
PHP:
$Human = new Human;

$humanArr = array('age'=>18, 'firstname'=>"Vanya", 'lastname'=>"Pupkin", 'country'=>"Ukraine", 'city'=>"Kyiv" );
Intersect::exchange($Human, $humanArr);
$Human->resume();

$Map = new Map;

$mapArr = array('scale'=>1000, 'country'=>"Ukraine", 'mapType'=>"political" );
Intersect::exchange($Map, $mapArr);
echo $Map->mapName;
 

Василий М.

Новичок
что бы понять ООП надо прочитать Буча, как минимум
НЕ хвататься за фреймворки (тут взрослые опытные дяди дают совершенно глупые советы, дяди походу из ума выжили), а писать самому ООП код, практиковаться
изучать ООП на PHP -- отстой. Хочешь научиться ООП - изучай Java. Там все почти является объектами и быстрее поймешь суть дела.
 

WMix

герр M:)ller
Партнер клуба
это мы запомним
PHP:
interface ForClasses
   function exchangeArray();
}
class Intersect{
   public function exchange( ForClasses $obj, array $arr ){
     $obj->exchangeArray($arr);
   }
}
придумай еще один новый интерфейс. с таким методом.
public function extract($object);
метод принимает обьект и возвращает масив. такой интерфейс может быть имплементирован к примеру у классов типо формуляр или результат запроса.
 
Сверху