Русскоязычный подкаст о PHP?

Есть ли русскоязычный подкаст о PHP?

Про JS есть (Frontflip), про руби есть (RWPod и Ruby noname), а про PHP на русском не нашел. Есть правда ребята из UI Web Design, но они про Wordpress, а не про PHP в целом.

В англоязычном подкастинге слушаю PHP Town Hall и Voices of the Elephpant, но оба с плохим звуком и зачастую просто льют воду и ржут в микрофон.

Может замутим качественный русскоязычный подкаст про PHP? Кто хочет поучаствовать?

Программа минимум: краткий обзор новостей из мира PHP за прошедшую неделю (аналог "дайджеста", публикуемого на хабре) длительностью до 10 минут. Получится что-то похожее на подкаст "Пятиминутка JavaScript (5minjs)", который был бодрым и интересным

Программа максимум (от 40 минут):
- новости из мира PHP (похоже на "дайджест интересных новостей из мира PHP" публикуемый на хабре)
- более детальное обсуждение какой-нибудь библиотеки/фреймворка/подхода, можно с гостем в студии - специалистом по этому фреймворку/библиотеке
- анонсы мероприятий, конференций; рассказ о прошедших, обсуждение самых интересных докладов/статей (ссылки на слайды, YouTube или статью)
- темы слушателей

UPDATE 19.05.2015
В итоге замутил подкаст по программе минимум, слушайте пилотный выпуск: 5minphp.ru
  • Вопрос задан
  • 1659 просмотров
Пригласить эксперта
Ответы на вопрос 3
ruFog
@ruFog
В некотором смысле от скуки делаю подкаст о PHP и связанных технологиях. Велкам.
Ответ написан
sim3x
@sim3x
зачем?

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

У пхп и так карма подгажена
Ответ написан
index0h
@index0h
PHP, Golang. https://github.com/index0h
Честно говоря не ясно, зачем... Про php есть тонны информации.

Хотя, я могу и ошибаться. Какие темы предполагаются?

2 вопроса:
- почему код ниже говно?
- почему код ниже НЕ говно?
))
<?php

namespace vendor\project\some\models;

/**
 * Class User
 */
final class User implements \Serializable
{
    const FIELD_USER_ID = 'userId';
    const FIELD_NAME = 'name';
    const FIELD_PASSWORD = 'password';

    /** @var int */
    private $userId;
    /** @var string */
    private $name;
    /** @var string */
    private $password;

    /**
     * User constructor
     *
     * @param string $userId
     * @param string $name
     * @param string $password
     */
    public function __construct($userId, $password, $name)
    {
        if (empty($userId)) {
            throw new \InvalidArgumentException('$userId MUST NOT be empty');
        }

        if (!is_int($userId)) {
            throw new \InvalidArgumentException('$userId MUST be int');
        }

        if ($userId < 0) {
            throw new \InvalidArgumentException('$userId MUST be more than 0');
        }

        if (empty($password)) {
            throw new \InvalidArgumentException('$password MUST NOT be empty');
        }

        if (!is_string($password)) {
            throw new \InvalidArgumentException('$password MUST be string');
        }

        if (mb_strlen($password) !== 32) {
            throw new \InvalidArgumentException('$password MUST have length 32');
        }

        if (empty($name)) {
            throw new \InvalidArgumentException('$name MUST NOT be empty');
        }

        if (!is_string($name)) {
            throw new \InvalidArgumentException('$name MUST be string');
        }

        $this->userId = $userId;
        $this->name = $name;
        $this->password = $password;
    }

    /**
     * @return string
     */
    public function getUserId()
    {
        return $this->userId;
    }

    /**
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * @return string
     */
    public function getPassword()
    {
        return $this->password;
    }

    /**
     * @return string
     */
    public function serialize()
    {
        return serialize(
            [
                self::FIELD_USER_ID => $this->getUserId(),
                self::FIELD_NAME => $this->getName(),
                self::FIELD_PASSWORD => $this->getPassword()
            ]
        );
    }

    /**
     * @param string $serialized
     *
     * @return string
     */
    public function unserialize($serialized)
    {
        if (!is_string($serialized)) {
            throw new \InvalidArgumentException('$serialized MUST be string');
        }
        
        $data = unserialize($serialized);
        if (
            !isset($data[self::FIELD_USER_ID]) ||
            !isset($data[self::FIELD_NAME]) ||
            !isset($data[self::FIELD_PASSWORD]) ||
            (count($data) !== 3)
        ) {
            throw new \InvalidArgumentException('Invalid serialized data');
        }

        return new self(
            $data[self::FIELD_USER_ID],
            $data[self::FIELD_NAME],
            $data[self::FIELD_PASSWORD]
        );
    }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы