Юра
Но просто проверить реально была ли она инициализирована в пыхе можно только через рефлексию
Юра
Костыльно как-то
Юра
Ну если нужно отличить unitialialized от нула
Vlad
я вот не вспомню кейса когда нужно проверять на unitialialized, если ты так делаешь что то ты делаешь не так
Vlad
и никогда не приходилось проверять на unitialialized
Юра
А ну раз тебе не приходилось то ок )
Юра
Мне ниразу не приходилось использовать спл фикс арэй, давайте уберем его
Юра
Или спл обджект сторадж
Vlad
ты мне приведи кейс рабочий где это реально нужно
Vlad
я про проверку на unitialialized
Юра
Если проверка на него не нужна никогда, почемк не проинициализироать нулом сразу?
Юра
В смысле на уровне языка
Юра
Наверное потому что null и uninitialised это немного разные вещи
Юра
Как null и undefined
Юра
Пример тебе. Ну есть у тебя класс. У него есть три проперти, А и Б обычные, С проперти которач зависит от А и Б. Ну вот а теперь подумай как ты напишешь код который обновит С при изменении А или Б
Dmitry
Юра
Я так и думал )
Dmitry
Я так и думал )
Ну так конструкторы в PHP придумали в 2000 году. Пора бы начать ими пользоваться по назначению :)
Юра
Твои эти конструкторы с бесконечными with(...) как-то не особо
Dmitry
Юра
ну а как менять
Юра
или теперь объект вообще нельзя менять?
Юра
только создавать новый передавая ему все поля оригинального?
Юра
или менять объекты это вообще моветон уже?
Dmitry
𝕎𝕒𝕣𝕞
Здравствуйте, у меня никак не проходит юнит тест, пишет Doctrine\DBAL\Exception\ConnectionException : An exception occurred in the driver: SQLSTATE[08006] [7] could not translate host name "postgres" to address: Name does not resolve
/opt/project/vendor/doctrine/dbal/src/Driver/API/PostgreSQL/ExceptionConverter.php:81
/opt/project/vendor/doctrine/dbal/src/Connection.php:1822
/opt/project/vendor/doctrine/dbal/src/Connection.php:1771
/opt/project/vendor/doctrine/dbal/src/Connection.php:328
/opt/project/vendor/doctrine/dbal/src/Connection.php:1529
/opt/project/vendor/doctrine/dbal/src/Connection.php:1278
/opt/project/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php:409
/opt/project/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php:403
/opt/project/var/cache/test/ContainerJmJXyY8/EntityManager_9a5be93.php:136
/opt/project/src/Users/Infrastructure/Repository/UserRepository.php:20
/opt/project/tests/Functional/Users/Infrastructure/Repository/UserRepositoryTest.php:30
𝕎𝕒𝕣𝕞
Я в докере им даже единую сеть явно задал
𝕎𝕒𝕣𝕞
И всё равно в упор не видит
Oleg
𝕎𝕒𝕣𝕞
Компоуз в студию
version: "3.8"
services:
php-fpm:
container_name: php-fpm
build:
context: ./../
dockerfile: ./docker/php-fpm/Dockerfile
args:
- PUID=${PUID}
- PGID=${PGID}
- INSTALL_XDEBUG=${INSTALL_XDEBUG}
networks:
- bossnetwork
environment:
PHP_IDE_CONFIG: "serverName=Docker"
volumes:
- /var/www/vendor/
- ./../:/var/www/
nginx:
container_name: nginx
build:
context: ./nginx
networks:
- bossnetwork
ports:
- ${NGINX_HOST_HTTP_PORT}:80
volumes:
- ..:/var/www:rw
depends_on:
- php-fpm
# mysql:
# container_name: mysql
# build:
# context: ./mysql
# environment:
# MYSQL_DATABASE: ${MYSQL_DB}
# MYSQL_USER: ${MYSQL_USER}
# MYSQL_PASSWORD: ${MYSQL_PASSWORD}
# MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
postgres:
container_name: postgres
build:
context: ./postgres
networks:
- bossnetwork
ports:
- ${POSTGRES_PORT}:5432
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- db_data:/var/lib/postgresql/data:rw
volumes:
db_data:
networks:
bossnetwork:
driver: bridge
𝕎𝕒𝕣𝕞
postgres docker:
FROM postgres:alpine
𝕎𝕒𝕣𝕞
При том без базы он проходит тесты
𝕎𝕒𝕣𝕞
Извне через ide он подключается по порту 54322
𝕎𝕒𝕣𝕞
а внутри докера не робит
Vlad
строку подключения покажи еще
𝕎𝕒𝕣𝕞
DB_PASS=a6yXCgL7ZEFDKdCoeJMbT3xlulEuwaWDCxXeWaMKcZKZrCLm6yI2sYpNV7wEOcav
#DATABASE_URL="mysql://root:${DB_PASS}@127.0.0.1:3306/darkness?serverVersion=8.0&charset=utf8mb4"
DATABASE_URL="postgresql://root:${DB_PASS}@postgres:5432/darkness?serverVersion=14.5&charset=utf8"
𝕎𝕒𝕣𝕞
Подозреваю он не обьявляет postgres в хостах
𝕎𝕒𝕣𝕞
Поменял на localhost
𝕎𝕒𝕣𝕞
Теперь он возращает такую ошибку
octrine\DBAL\Exception\ConnectionException : An exception occurred in the driver: SQLSTATE[08006] [7] connection to server at "localhost" (127.0.0.1), port 5432 failed: Connection refused
Is the server running on that host and accepting TCP/IP connections?
connection to server at "localhost" (::1), port 5432 failed: Address not available
Is the server running on that host and accepting TCP/IP connections?
Юра
0.0.0.0 поставь
Юра
Postgres host
𝕎𝕒𝕣𝕞
В /etc/hosts докера?
Юра
А не туплю
Юра
Постгрес слушает на 0.0.0.0?
𝕎𝕒𝕣𝕞
Юра
Посмотреть доку образа постгреса
Юра
Наверное там есть настройка
Юра
Хотя может я не правд вообще
Юра
У тебч конект идет на локалхост
Юра
Это явно не так должно быть
Юра
Конект должен пойти на postgres контейнер
𝕎𝕒𝕣𝕞
Он не слушает соединение...
Юра
Это внутри контейнера?
𝕎𝕒𝕣𝕞
Юра
По-моему это не внутри постгрес контейнера
Юра
Почему у него 9000 порт там слушает?
Юра
Да и скорее всего внутри постгрес контейнера не будет никакого netstat
𝕎𝕒𝕣𝕞
Так, секунду
𝕎𝕒𝕣𝕞
Я проваливался в контейнер с проеектом... Вот что имею на контейнере постгреса
𝕎𝕒𝕣𝕞
Юра
Да а теперь разберись почему из пхп фмп конект идет на локалхост
Юра
А не на постгрес контейнер
Юра
Вообще трогать etc hosts внутри контейнеров нельзя
Юра
Запрос на postgres хост пойдет серез докер днс, и он должен разрулить его а айпи нужного контейнера
Юра
Иногда кстати это сбоит или кешируется и помогает рестарт контейнеров
𝕎𝕒𝕣𝕞
А как их рестартнуть?
𝕎𝕒𝕣𝕞
Кароче, полностью затираю контейнеры и собираю по новой, чтоб наверняка заработало
Юра
Ты бы зашёл на фпм
Юра
И сделал пинг postgres
Юра
И посмотрел куда оно резолвит
𝕎𝕒𝕣𝕞
Уже собираю по новой
𝕎𝕒𝕣𝕞
Если не исправит то пингану
𝕎𝕒𝕣𝕞
Юра
а что за ошибка
𝕎𝕒𝕣𝕞
не помогло, попробую отказатся от алпайн версии
Юра
Что за хост ты явно указал
Юра
Ничего не надо явно указывать
𝕎𝕒𝕣𝕞