php composer - unitTest

223
26 апреля 2019, 16:20

Только знакомлюсь с композером и юнит тестами. Установил юнит тесты через композер. Так выглядит json-файл:

{
    "require": {
        "symfony/var-dumper": "dev-master",
        "phpunit/phpunit": "^7.4"
    }
}

При попытке создать класс унаследованный от PHPUnit_Framework_TestCase я получил fatal error - что такой класс не найден..

На офоц. сайте PHPUnit, увидел такую запись \PHPUnit\Framework\TestCase - которая помогла:

class AppTest extends \PHPUnit\Framework\TestCase {...}

Насколько я понял, это связано со стандартами psr-0 и psr-4 ? Как это настраивается для композера? В каких случаях можно один вид записи использовать, в каких - второй (через нижнее подчеркивание вместе обратного слэша)? В чем преимущества одного и второго?

Также хотел понять, можно ли менять расположение папки vendor композера, как это делать, и чем чревато?

Answer 1

Как вы верно ответили существует два стандарта автозагрузки в php psr-0 и psr-4. Psr-4 это обновлённый улучшенный psr-0. Одно из важных различий является загрузка через _ например:

  • Файл находится в /src/classes/Test.php должен называться Src_Classes_Test

Такая автозагрузка встречается для устаревшего фреймворка zend framework 1. Настраевается в composer:

"autoload": {
        "psr-0": {
            "Zend_": "library/"
        }
},

Для psr-4 пример: - Файл находится в /src/classes/Test.php должен вызваться Src/Classes/Test

Настраивается:

"autoload": {
      "psr-4": {
        "": "src/"
      }
},

Не забывайте что для стандарта psr-2 для длинных названий класса следует использовать:

use \PHPUnit\Framework\TestCase as TestCase;
class AppTest extends TestCase {}

Vendor можно поменять, но обычно меняют в случае необходимости: https://getcomposer.org/doc/06-config.md#vendor-dir

"config": {
        "vendor-dir": "libs"
    }
READ ALSO
Условие если <input> содержит файл php

Условие если <input> содержит файл php

Подскажите пожалуйста, есть тег <input name="upload[]" type="file" multiple="multiple" /> Как сделать условие php если input имеет файлВопрос так и не решен

165
отличие сессий от кук [дубликат]

отличие сессий от кук [дубликат]

На данный вопрос уже ответили:

162
foreach и запросы к базе(совсем новичок)

foreach и запросы к базе(совсем новичок)

Пытаюсь сделать выгрузку товаров из корзины магазина с помощью PHPExcel

132