Имеем класс Address с конструктором
public function __construct(string $country,string $city, string $street, string $house, string $building = '') {}
Я хочу валидировать все части адреса (страну, город, улицу, дом, строение). Это всё удается
private function isCountryValid($param) {
if (empty($param) || !preg_match("/^[а-яё0-9- ]+$/iu", $param)) {
throw new AddressWithoutCountryException($param);
}
}
и тест удается нормально написать
public function testAddressCreatedWithoutCountry() {
$this->expectException(AddressWithoutCountryException::class);
CreateCompanyBuilder::instance()->withAddress(new Address('', 'Москва', 'Солнечная', '15',''))->build();
}
Но что делать, если я хочу сделать тест без параметров вообще
public function testCreateCompanyWithoutAddress() {
$this->expectException(CompanycWithoutAddressException::class);
CreateCompanyBuilder::instance()->withAddress(new Address())->build();
}
В этом случае логично выдается
Failed asserting that exception of type "ArgumentCountError" matches expected exception ... at least 4 expected
Вопрос номер один - как переопределить ArgumentCountError, (и где) чтобы выдавать исключение вроде
class CompanyWithoutAddressException extends ArgumentCountError {
public function __construct()
{
parent::__construct('У организации должен быть заполнен адрес');
}
Сейчас всё равно бросается исключение ArgumentCountError
даже если сделать так
public function __construct(string $country,string $city, string $street, string $house, string $building = '0') {
if (!$country && !$city && !$street && !$house) {
throw new CompanyWithoutAddressException();
}
И второй вопрос - как лучше сделать передачу параметров в конструктор
string $country,string $city, string $street, string $house, string $building = ''
с необязательным параметром $building (строение). Оно может быть, а может не быть. Можно убрать его из конструктора и передавать сеттером, но хотелось бы прям целиком dto засовывать в конструктор.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Я хотел бы обратиться к последнему элементу в цикле while, чтобы не добавлять табуляцию в кодеЯ бы мог сделать ещё один запрос к БД(на длину таблицы),...
Есть php код, который получает данные из файла sxlsx используя библиотеку PHPExcel, и выводит их в таблицу для печати ценников с qr-кодами
Проект на Symfony, я указываю ссылку на страницу, она лежит в проекте, но сайт протестует и выдает 404 ошибку(ссылка указана правильно)