• $$$ что значит в php?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Это называется переменная с переменным именем (variable variable).

    class Foo {
      public $deepest = 'Limbo';
      
      public function __toString()
      {
        return 'deep';
      }
    }
    
    $deeper = 'deepest';
    $deep = 'deeper';
    $b = new Foo();
    
    echo $b->$$$b;


    Выражение выполняется справа налево:
    1. $b->$$($b) превращается в $b->$$($b->__toString()), поскольку именно так ведут себя объекты, когда на них пытаются натравить echo;
    2. $b->$$($b->__toString()) превращается в $b->$(${'deep'}), именно это значение возвращает метод __toString класса Foo, инстансом которого является $b;
    3. $b->$(${'deep'}) превращается в $b->$($deep), это как раз вызов переменной при помощи значения из другой переменной;
    4. $b->$($deep) превращается в $b->${'deeper'}, поскольку именно такое значение находится в переменной $deep;
    5. $b->${'deeper'} превращается в $b->($deeper);
    6. $b->($deeper) превращается в $b->deepest;
    7. наконец, получается значение свойства 'deepest' из $b, а там как раз хранится 'Limbo', оно и выводится в echo.

    dd178a12658f41679b71884846669132.jpg
    Ответ написан
    8 комментариев
  • Как разбить числа на примерно равные группы?

    maaGames
    @maaGames
    Погроммирую программы
    сортируешь массив и берёшь значения с краёв, пока не достигнет лимита. Потом в другую кучку опять с краёв берёшь. За счёт этого самые большие числа будут в кучке с самыми маленькими. Решение не оптимальное, зато никакой комбинаторики и линейная сложность.
    Ответ написан
    Комментировать
  • Как отключить загрузку страниц в фоновых табах до тех пор пока я сам к ним не перейду в Chrome и в Firefox?

    @Kell
    Насколько я понимаю, такого расширения для Хрома все еще нет. Как замену можно рекомендовать FooTab - он при запуске хрома загружает активную вкладку, а уже секунд через 10 в бэкграунде начинает грузить остальные по очереди. Естественно, если вкладку сменить, она будет в приоритете и загрузится сразу же. В магазине Chrome, как я понимаю, его нет, потому выше ссылка на SourceForge.
    Ответ написан
    1 комментарий
  • Как правильно настроить PHPStorm7 для PHPUnit?

    janson
    @janson
    PHP-разработчик
    Действительно - проще всего с .phar файлом в конкретном проекте.

    Версию PHPUnit ставьте 3.7.XX. С четвёртой версией в PHPStorm 7 пока что баг с запуском тестов (в PHPStorm 8 EAP вроде починили). Вручную из консоли всё работает, а вот из PHPStorm - ругается.

    Как запустить:
    1. Создаём структуру проекта, как по данной вами ссылке:

    |-src
    |   |-autoload.php
    |   |-Money.php
    |
    |-tests
        |-MoneyTest.php


    В файле autoload.php нужно подключить файлы, которые вы собираетесь тестировать.

    <?php
    require_once __DIR__ . '/Money.php';


    2. Настраиваем конфигурацию PHPUnit:
    Run -> Edit Configurations...
    В левой верхней части появившегося окна жмём зелёный плюс и настраиваем конфигурацию:
    - устанавливаем Test Scope на 'Directory' и указываем путь к папке tests
    88950935cf654d2d9913317a82873cc6.png
    - жмём на гаечный ключ и настраиваем путь к phpunit.phar (если у вас локально используется папка с PHPUnit - то подключаете её в File -> Settings -> ProjectSettings -> PHP ... Include Paths, и затем в настройках PHPUnit переключаем на Load From Include Path).
    73258cc7bdf54d138d5cf60708810d02.png
    - также указываем default bootstrap file на наш autoload.php, где подключаем классы, которые собственно будем тестировать (где лежат сами тесты мы указали для PHPUnit в начале).
    - Жмём Apply -> Apply -> OK

    Всё, теперь рядом с созданой конфигурации на панели PHPStorm появилась зелёная стрелка для запуска тестов. Жмём, и если всё правильно - получаем зелёную полосу.
    c3371b9827824186b099c19932bbfac7.png

    Т.е. процесс настройки - это три шага:
    1. указываем где лежит PHPUnit
    2. указываем где лежат тесты
    3. указываем где лежит загрузчик тестируемых классов.

    Вроде всё.
    Ответ написан
    1 комментарий
  • Какую книгу по java купить для новичка?

    xappymah
    @xappymah
    В целом, на мой взгляд, чтобы вникнуть в основы языка при наличии минимального опыта программирования, подходят все трое (Эккель, Хортсмэн, Шилдт).

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

    docs.oracle.com/javase/tutorial/

    И, конечно же, с определенного момента положить себе в закладки и Javadoc Java SE API:

    docs.oracle.com/javase/7/docs/api/
    Ответ написан
    Комментировать
  • Как достать файлы с VPS без FTP?

    lacki
    @lacki
    Если есть SSH доступ можно воспользоваться WinSCP или scp.
    Ответ написан
    Комментировать
  • Два рабочих места на одном стационарном ПК — как?

    7workers
    @7workers
    Сделайте ребёнка — проблема с компом решится.
    Ответ написан
    2 комментария