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

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

abstract class B implements C
{
}

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


PHP:
abstract class B implements C
{
}

interface C
{
}

class A extends B
{
}
 
из всего этого говна ООП у тебя лишь в одном месте просматривается
А тогда подскажите как лучше тесты писать - програмкой или в уме( в комментариях написать)? Если програмкой, то посоветуйте какой пользуетесь.
 
для функции нет, для класса тоже нет, если автолодер настроен
 
Я догадиваюсь что нужен абстрактный класс, в котором будет реализован этот метод, которого будут наследовать Map and Human.
нет, я предлагаю посмотреть на все несколько с другой стороны. есть 2 совершенно различных класса, но они имеют нечто общее одинаковый метод. более того один тип

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

итак, хочу иметь некий класс, с методом принимающим первым аргументом любой обьект класса имплементирующего ForClasses, и вторым некий массив.
public function exchange( ForClasses obj, array $arr ); внутри метода вызывается exchangeArray для указанного обьекта
 
\
нет, я предлагаю посмотреть на все несколько с другой стороны. есть 2 совершенно различных класса, но они имеют нечто общее одинаковый метод. более того один тип
да да, я так и думал что нужно забыть все что я сказал)
 
итак, хочу иметь некий класс, с методом принимающим первым аргументом любой обьект класса имплементирующего 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. Там все почти является объектами и быстрее поймешь суть дела.
 
это мы запомним
PHP:
interface ForClasses
   function exchangeArray();
}
class Intersect{
   public function exchange( ForClasses $obj, array $arr ){
     $obj->exchangeArray($arr);
   }
}
придумай еще один новый интерфейс. с таким методом.
public function extract($object);
метод принимает обьект и возвращает масив. такой интерфейс может быть имплементирован к примеру у классов типо формуляр или результат запроса.
 
Сверху