Юра
Но просто проверить реально была ли она инициализирована в пыхе можно только через рефлексию
Юра
Костыльно как-то
Юра
Ну если нужно отличить unitialialized от нула
Vlad
я вот не вспомню кейса когда нужно проверять на unitialialized, если ты так делаешь что то ты делаешь не так
Vlad
и никогда не приходилось проверять на unitialialized
Юра
А ну раз тебе не приходилось то ок )
Юра
Мне ниразу не приходилось использовать спл фикс арэй, давайте уберем его
Юра
Или спл обджект сторадж
Vlad
ты мне приведи кейс рабочий где это реально нужно
Vlad
я про проверку на unitialialized
Юра
Если проверка на него не нужна никогда, почемк не проинициализироать нулом сразу?
Юра
В смысле на уровне языка
Юра
Наверное потому что null и uninitialised это немного разные вещи
Юра
Как null и undefined
Юра
Пример тебе. Ну есть у тебя класс. У него есть три проперти, А и Б обычные, С проперти которач зависит от А и Б. Ну вот а теперь подумай как ты напишешь код который обновит С при изменении А или Б
Юра
Я так и думал )
Dmitry
Я так и думал )
Ну так конструкторы в PHP придумали в 2000 году. Пора бы начать ими пользоваться по назначению :)
Юра
Твои эти конструкторы с бесконечными with(...) как-то не особо
Юра
ну а как менять
Юра
или теперь объект вообще нельзя менять?
Юра
только создавать новый передавая ему все поля оригинального?
Юра
или менять объекты это вообще моветон уже?
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
𝕎𝕒𝕣𝕞
Я в докере им даже единую сеть явно задал
𝕎𝕒𝕣𝕞
И всё равно в упор не видит
𝕎𝕒𝕣𝕞
Компоуз в студию
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?
𝕎𝕒𝕣𝕞
Постгрес слушает на 0.0.0.0?
А как сделать чтоб слушал?
Юра
Посмотреть доку образа постгреса
Юра
Наверное там есть настройка
Юра
Хотя может я не правд вообще
Юра
У тебч конект идет на локалхост
Юра
Это явно не так должно быть
Юра
Конект должен пойти на postgres контейнер
𝕎𝕒𝕣𝕞
Он не слушает соединение...
Юра
Это внутри контейнера?
Юра
По-моему это не внутри постгрес контейнера
Юра
Почему у него 9000 порт там слушает?
Юра
Да и скорее всего внутри постгрес контейнера не будет никакого netstat
𝕎𝕒𝕣𝕞
Так, секунду
𝕎𝕒𝕣𝕞
Я проваливался в контейнер с проеектом... Вот что имею на контейнере постгреса
𝕎𝕒𝕣𝕞
Вот что показало
Юра
Да а теперь разберись почему из пхп фмп конект идет на локалхост
Юра
А не на постгрес контейнер
Юра
Вообще трогать etc hosts внутри контейнеров нельзя
Юра
Запрос на postgres хост пойдет серез докер днс, и он должен разрулить его а айпи нужного контейнера
Юра
Иногда кстати это сбоит или кешируется и помогает рестарт контейнеров
𝕎𝕒𝕣𝕞
А как их рестартнуть?
𝕎𝕒𝕣𝕞
Кароче, полностью затираю контейнеры и собираю по новой, чтоб наверняка заработало
Юра
Ты бы зашёл на фпм
Юра
И сделал пинг postgres
Юра
И посмотрел куда оно резолвит
𝕎𝕒𝕣𝕞
Уже собираю по новой
𝕎𝕒𝕣𝕞
Если не исправит то пингану
𝕎𝕒𝕣𝕞
И сделал пинг postgres
Пинги доходят до 172.22.0.2
Юра
а что за ошибка
𝕎𝕒𝕣𝕞
а что за ошибка
Я явно указал хост в постгрес
𝕎𝕒𝕣𝕞
не помогло, попробую отказатся от алпайн версии
Юра
Что за хост ты явно указал
Юра
Ничего не надо явно указывать