Программирование php на практике

Практика: Объектно-ориентированное программирование в PHP.

Лучший способ узнать что-либо — это практика и упражнения.

Практикуйте все, что вы узнали из руководств по объектно-ориентированному программированию PHP .

Классы и объекты

Практикуйте классы, объекты, методы и свойства, пройдя тест и выполнив практические упражнения по кодированию.

Ключевое слово $ this

Попрактикуйтесь в использовании ключевого слова $ this .

Цепочки методов и свойств

Практикуйтесь в цепочке методов и свойств вашего класса, чтобы создать гораздо больше потокового кода.

Публичное против частного

Попрактикуйтесь в использовании модификаторов частного и защищенного доступа для ограничения доступа к коду ваших классов.

Магические методы и константы

Практикуйте использование магических методов и констант.

Наследование в PHP

Практикуйте наследование с помощью этого практического упражнения по кодированию.

Абстрактные классы и методы

Попрактикуйтесь в использовании абстрактных классов, чтобы передать дочерние классы абстрактным методам, которые они наследуют от своих абстрактных классов.

Интерфейсы — новый уровень абстракции

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

Полиморфизм

Практикуйте соглашение об именах полиморфизма, которое может помочь вам написать гораздо более последовательный и простой в использовании код.

Подсказка типов

Попрактикуйтесь в использовании подсказки типов, чтобы заставить ваши функции получать только аргументы, принадлежащие определенному типу данных.

Practice the use of type hinting for interfaces to improve your code organization and usability.

Читайте также:  Что такое subarray python

Static methods & properties

How to use a class methods and properties without first instantiating the class, and why static methods should be used with cautious.

Источник

Сборник практических задач PHP для подготовки к собеседованию

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

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

Для старта достаточно клонировать сборник себе и начать описывать реализацию, все оставльное уже есть. Есть готовые входящие данные для задач, есть FB класс, который позволяет уйти от var_dump() или print_r(). Все есть, поставил и сразу можно выполнять задачи — без лишней суеты. Надеюсь, кому-нибудь это окажется нужным.

Как пользоваться?
Для удобства, задачи представилены несколькими интерфейсами папка на Github. Возьмем интерфейс ITestSortInterface (/src/Training) в качестве иллюстрации. Из названия видно, что в нем лежат задачи по сортировке:

array('price'=>10,'count'=>2), * '2'=>array('price'=>5,'count'=>5), * '3'=>array('price'=>8,'count'=>5), * '4'=>array('price'=>12,'count'=>4), * '5'=>array('price'=>8,'count'=>4), * ) * На выходе отсортированный массив * по 'price' DESC и во вторую очередь по 'count' DESC * array( * '2'=>array('price'=>5,'count'=>2), * '5'=>array('price'=>8,'count'=>4), * '3'=>array('price'=>8,'count'=>5), * '1'=>array('price'=>10,'count'=>5), * '4'=>array('price'=>12,'count'=>4), * ) * */ public function testSort2($array); /** * Отсортировать числа на диагонали квадратной матрицы * На входе квадратная матрица * array( * array(10,5,3,6), * array(8,2,11,13), * array(9,25,30,18), * array(34,37,38,24) * ) * * На выходе должен быть массив * array( * array(2,5,3,6), * array(8,10,11,13), * array(9,25,24,18), * array(34,37,38,30) * ) * */ public function testSort3($array); > 

Для начала выполнения заданий необходимо создать класс имплементирующий желаемые интерфейсы. Я назвал свой класс Test:

 $array[0]) $x[] = $array[$i]; else $y[] = $array[$i]; > return array_merge($this->testSort1($y), array($array[0]), $this->testSort1($x)); > /** * Отсортировать двумерный массив пришедший из БД * * На входе array( * '1'=>array('price'=>10,'count'=>2), * '2'=>array('price'=>5,'count'=>5), * '3'=>array('price'=>8,'count'=>5), * '4'=>array('price'=>12,'count'=>4), * '5'=>array('price'=>8,'count'=>4), * ) * На выходе отсортированный массив * по 'price' DESC и во вторую очередь по 'count' DESC * array( * '2'=>array('price'=>5,'count'=>2), * '5'=>array('price'=>8,'count'=>4), * '3'=>array('price'=>8,'count'=>5), * '1'=>array('price'=>10,'count'=>5), * '4'=>array('price'=>12,'count'=>4), * ) * */ public function testSort2($array) < // TODO: Implement testSort2() method. >/** * Отсортировать числа на диагонали квадратной матрицы * На входе квадратная матрица * array( * array(10,5,3,6), * array(8,2,11,13), * array(9,25,30,18), * array(34,37,38,24) * ) * * На выходе должен быть массив * array( * array(2,5,3,6), * array(8,10,11,13), * array(9,25,24,18), * array(34,37,38,30) * ) * */ public function testSort3($array) < // TODO: Implement testSort3() method. >> $test = new Test(); /** * Тут подробнее. * \FireDog\FB::info() - выводит дебаг инфу в консоль сервера * Data::getData(Data::ARR_SIMPL_INT) - предоставляет готовые данные для заданий */ \FireDog\FB::info($test->testSort1(Data::getData(Data::ARR_SIMPL_INT))); 

image

Тут используются два вспомогательных класса \FireDog\FB и Training\Data. ( Позвольте небольшую ремарку: Использование FB или Data не обязательно — это вспомогательные классы для удобства. Однако, консоль браузера представляется мне более удобной альтернативой var_dump() или print_r() )
Первый выводит дебаг инфу в консоль браузера:

Читайте также:  How to edit css in code

Для браузера потребуется установка плагина firephp. Тут плагин для Хрома.
Второй класс Data, хранит готовые данные для заданий. Для задания $test->testSort1() нам нужен массив array(2,5,3,5,6,7,8,9,25,24,18,26,27,28,29,30,31) его то мы и получаем Data::getData(Data::ARR_SIMPL_INT)

Сборник будет пополняться и его можно использовать не только для подготовки к собеседованию, но и просто для тренировки навыков программирования на PHP. Присылайте свои задачи, наиболее интересные будут опубликованы в сборнике.

P.S.
Сборник содержит, только простые задачи, которые встречаются в рамках собеседования. По этой причине некоторые задачи содержат формулировки вроде: «Отсортировать одномерный массив своими силами» Да-да, есть функция sort(), но тут важен контекст собеседования. Если Вам ставят задачу сформулированную именно так и вы на собеседовании, то вероятнее всего, такая задача преследует единственную цель, а именно оценить вашу алгоритмическую подготовку. Надеюсь, это понятно.

Источник

Оцените статью