小编Rob*_*ert的帖子

Dockerfile FROM vs Docker-compose IMAGE

我目前正在学习 Docker。阅读文档和几篇文章后,我显然有更多的问题而不是答案。目前对我来说最有趣的是:两者之间有什么区别?

FROM some:docker-image
Run Code Online (Sandbox Code Playgroud)

在 Dockerfile 和

image: digitalocean.com/php 
Run Code Online (Sandbox Code Playgroud)

在 docker-compose.yml

我明白他们应该抓取图像并从中创建一个容器。我不明白的是如果我们同时指定两者会发生什么,例如:

version: '3'
services:
  #PHP Service
  app:
    build:
      context: .
      dockerfile: Dockerfile
    image: digitalocean.com/php
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml 和 Dockerfile 都指定了图像。当这些图像不同时会发生什么?docker-compose.yml 会永远赢吗?它会只使用这个“顶部”图像吗?它们会以某种方式重叠吗?或者,也许我都弄错了?

我确实看到了这一点,但我仍然不确定我是否理解发生了什么。

php docker dockerfile docker-compose docker-image

7
推荐指数
1
解决办法
1548
查看次数

PHP 7.4 类型化属性迭代

我刚刚发现了一些关于 PHP 7.4 的“有点奇怪”,我不确定是我遗漏了什么,或者它是否是一个实际的错误。大多数情况下,我对您的意见/确认感兴趣。

所以在 PHP 中,你可以像这样迭代对象属性:

class DragonBallClass 
{
    public $goku;
    public $bulma = 'Bulma';
    public $vegeta = 'Vegeta';
}

$dragonBall = new DragonBallClass();

foreach ($dragonBall as $character) {
  var_dump($character);

}

RESULT

NULL
string(5) "Bulma"
string(6) "Vegeta"
Run Code Online (Sandbox Code Playgroud)

现在,如果我们开始使用这样的强类型属性:

class DragonBallClass 
{
    public string $goku;
    public string $bulma = 'Bulma';
    public string $vegeta = 'Vegeta';
}

$dragonBall = new DragonBallClass();

foreach ($dragonBall as $character) {
  var_dump($character);

}
Run Code Online (Sandbox Code Playgroud)

我们会得到不同的结果:

string(5) "Bulma"
string(6) "Vegeta"
Run Code Online (Sandbox Code Playgroud)

现在有什么不同:

当您不为强类型属性分配默认值时,它将是Uninitialized类型的。这当然有道理。问题是,如果它们最终像这样你不能循环它们,它们将被简单地省略 - 没有错误,没有你在第二个例子中看到的任何东西。所以我只是无法访问它们。

这是有道理的,但想象一下你有一个像这样的自定义请求/数据类:

namespace …
Run Code Online (Sandbox Code Playgroud)

php iteration types php-7 php-7.4

7
推荐指数
1
解决办法
3147
查看次数

Doctrine默认值vs null插入

有些事困扰着我.我试图找到一个明确的答案但到目前为止没有运气.

我正在使用Symfony3和Doctrine2以及MariaDB.

让我们假设我在我的实体中创建了这样的东西:

/**
 * @ORM\Column(
 *     name="status",
 *     type="boolean",
 *     options={"default": 0}
 * )
 */
private $status;
Run Code Online (Sandbox Code Playgroud)

现在多亏了这个我在数据库中有默认值为0的字段:

`status` tinyint(1) NOT NULL DEFAULT '0',
Run Code Online (Sandbox Code Playgroud)

但是每当我尝试将数据保存到数据库中时,有什么意义呢(我只想保存10个字段中的1个):

$story->setContent('Test Content');

$em = $this->getDoctrine()->getManager();
$em->persist($story);
$em->flush();
Run Code Online (Sandbox Code Playgroud)

我明白了:

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'status' cannot  be null
Run Code Online (Sandbox Code Playgroud)

因为,当然对象上的其他字段都是null.

我可以通过在构造函数中设置默认值或允许DB中的空值来解决此问题.

如果我不想这样做怎么办?我还有其他方法吗?

所以我想知道的是:

  • 是在实体中设置默认值还是只允许在DB中使用空值?
  • 这里的逻辑有问题吗?
  • 有没有更酷,更干净的方式这样做?

mysql doctrine insert mariadb symfony

5
推荐指数
1
解决办法
5468
查看次数

Symfony 5 功能测试 - 缺少环境变量,getenv() 返回 false

我正在将我的一个项目重写为 Symfony 5。我注意到环境变量有些奇怪。我无法再像以前在功能测试中获取它们一样获取它们了。

这并不重要,但我有自己的习惯ApiTestCase,它扩展了 Symfony 5 附带的现有测试用例。

在那里我正在做类似的事情(这不是关于我的应用程序的设计或流程的问题,只是关于如何获取变量):

<?php

namespace App\Tests;

use App\Traits\Tools\Tests\Database\UsesTestDatabase;
use Symfony\Bundle\FrameworkBundle\KernelBrowser;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

/**
 * Class ApiTestCase
 * @package App\Tests
 */
class ApiTestCase extends WebTestCase
{
   /**
     * ApiTestCase constructor.
     */
    public function __construct()
    {
        parent::__construct();
        dd(getenv('TEST_ENV_VARIABLE')) // should give me 'my secret env value'
    }
}
Run Code Online (Sandbox Code Playgroud)

# this is .env.test file

############################################################################################################
#
# GENERAL SETTINGS
#
############################################################################################################

KERNEL_CLASS='App\Kernel'
APP_ENV=test

############################################################################################################
#
# TEST DATABASE CONFIGURATION
#
############################################################################################################

TEST_ENV_VARIABLE='my secret env value'

Run Code Online (Sandbox Code Playgroud)

TEST_ENV_VARIABLE …

integration-testing environment-variables functional-testing symfony symfony5

4
推荐指数
1
解决办法
6674
查看次数