小编waw*_*awa的帖子

Flutter在initState方法中获取上下文

我不确定这是否initState是正确的功能.我想要实现的是检查页面何时呈现以执行某些检查,并根据它们打开a AlertDialog来进行一些设置(如果需要).

我有一个有州的页面.它的initState功能如下:

@override
void initState() {
    super.initState();
    if (!_checkConfiguration()) {
        _showConfiguration(context);
    }
}
Run Code Online (Sandbox Code Playgroud)

_showConfiguration这样的:

void _showConfiguration(BuildContext context) {
    AlertDialog dialog = new AlertDialog(
        content: new Column(
            children: <Widget>[
                new Text('@todo')
            ],
        ),
        actions: <Widget>[
            new FlatButton(onPressed: (){
                Navigator.pop(context);
            }, child: new Text('OK')),
        ],
    );

    showDialog(context: context, child: dialog);
}
Run Code Online (Sandbox Code Playgroud)

如果有一个更好的方法进行此检查,如果需要调用模态,请指向我正确的方向,我正在寻找一个onStateonRender函数,或我可以分配build给要在渲染上调用的函数的回调但不是能够找到一个.


编辑:它在这里接缝他们有类似的问题:Flutter重定向到initState上的页面

dart flutter

35
推荐指数
3
解决办法
3万
查看次数

在 PHP 中根据名称创建枚举

在 PHP 8.1 中,BackedEnum提供了fromandtryFrom方法来从值获取枚举。如何通过无支持的枚举来实现相同的效果?

支持枚举示例:

enum MainType: string
{
    case Full = 'a';
    case Major = 'b';
    case Minor = 'c';
}

var_dump(MainType::tryFrom('a')); // MainType::Full
var_dump(MainType::tryFrom('d')); // null
Run Code Online (Sandbox Code Playgroud)

然而,这对于常规枚举来说并不存在。

我如何按名称检索“正常”枚举,例如:

enum MainType
{
    case Full;
    case Major;
    case Minor;
}

$name = (MainType::Full)->name
var_dump(name); // (string) Full
Run Code Online (Sandbox Code Playgroud)

我发现的一个选择是简单地添加一个tryFromName函数,接受一个字符串并循环遍历所有情况,如下所示:

enum MainType
{
    case Full;
    case Major;
    case Minor;

    public static function tryFromName(string $name): ?static
    {
        foreach (static::cases() as $case) {
            if ($case->name === …
Run Code Online (Sandbox Code Playgroud)

php enums

10
推荐指数
2
解决办法
3539
查看次数

memcached、APCu 或 redis 作为 Symfony 和 Doctrine 的缓存

我们目前正试图决定,我们应该在 Symfony 和 Doctrine 中使用什么缓存。它背后的想法是通过缓存值来减少负载和数据库调用。有问题的缓存系统是:memcachedAPCuredis

我们目前最喜欢的是 APCu,因为 memcache 可能会有一个小的开销,因为它可以作为分布式缓存运行,但是它也允许将 PHP 会话直接存储在 memcache 中。Redis 接缝“太多了”,因为它可以用作数据库,所以可能会有很多开销,这就留下了 APCu。

我们目前使用的 Symfony 版本是 2.8,我们可能会在不久的将来更新到 3.x,以便更好地集成缓存(对于3.13.3,我们可能会等待 Symfony 3.3 发布)

memcached 的优势很明显,它是分布式的,这意味着多个服务器可以访问它。然而,我们目前只在一台服务器上运行 Symfony 应用程序,还没有计划改变这一点。

问题:三种不同缓存系统的优缺点是什么?特别是,当使用 Symfony 2.8 与使用 Symfony 3.x 时?什么是负载,它们会放在系统上吗?

如果问题是基于意见的,请随时关闭它。

memcached caching symfony doctrine-orm apcu

6
推荐指数
1
解决办法
2579
查看次数

Symfony/Doctrine ManyToMany 按照分配的顺序

我有一个名为实体Game具有ManyToMany与连接JoinTable到名为实体Question

这很好用。问题是,我需要的准确顺序的问题,因为他们选择,而不是问题编号的顺序排列,像我现在让他们当我打电话getQuestions()Game类。有没有办法做到这一点?

问题都添加了$game->addQuestion($question);。问题是存在的,游戏是坚持,在问题被添加后。

...
class Game {
    ...
    /**
     * @ORM\ManyToMany(targetEntity="Question")
     * @ORM\JoinTable(name="Games_to_Questions",
     *      joinColumns={@ORM\JoinColumn(name="game_id", referencedColumnName="id")},
     *      inverseJoinColumns={@ORM\JoinColumn(name="question_id", referencedColumnName="id")}
     *      )
     **/
    private $questions;
    ...
}
...
class Question {
    ...
}
...
Run Code Online (Sandbox Code Playgroud)

php many-to-many join symfony doctrine-orm

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

仅当在正确的分支上且发生更改时,GitLab CI/CD 才运行步骤

我希望构建过程中的一个步骤仅在分支上运行master(如果文件夹发生更改)src

我的.gitlab-ci.yml文件因此包含:

build:php:
    stage: build
    image: alpine
    interruptible: true
    needs: [ "test:php" ]
    script:
        - do stuff // abreviated for simplicity
    rules:
        -   if: $LANGUAGE_RELEASE
            when: never
        -   if: '$CI_COMMIT_REF_SLUG == "master"' # run for production test branch
        -   changes:
                - src/*
Run Code Online (Sandbox Code Playgroud)

然而,这里的问题是,当dev我更改任何内容时,它也会在分支上运行。

问题:是否有一种方法可以仅运行此步骤,同时满足两个条件(分支和更改)?

gitlab-ci

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

在NetBeans中将Vagrant机器用作SFTP连接

使用NetBeans在我的Vagrant虚拟服务器上工作时遇到一些麻烦。我试图在远程服务器上创建一个新的PHP项目,然后NetBeans要求我提供连接,所以我创建了一个新连接。对于我输入的主机名127.0.0.1,作为用户vagrant我链接了私钥文件(由vagrant生成),并填写了初始目录。

当我尝试这样连接时,它会询问我无业游民的密码(我没有,因为它应该提供私钥文件...)。使用Vagrant 222222无论如何我都需要连接到端口而不是ssh连接,因此我将主机名更改为127.0.0.1:2222。现在我得到一个java.net.UnknownHostException: 127.0.0.1:2222

因此产生了一个问题:你们中的任何人都可以使用NetBeans通过SFTP连接到无所事事的机器吗?如果是,怎么办?

注意:不确定它是否重要,但是我使用的是Ubuntu 14.04计算机,而我的NetBeans版本是8.0.2,因此我已经安装了PHP / Web软件包。

sftp netbeans vagrant netbeans-8

3
推荐指数
1
解决办法
2337
查看次数

Docker 构建期间无法启动 MariaDB/MySQL

我的当前Dockerfile看起来像这样:

FROM ubuntu:14.04

ENV DEBIAN_FRONTEND noninteractive
ENV INITRD No
ENV LANG en_US.UTF-8

# Maria DB Versions
ENV MARIADB_MAJOR 5.5
ENV MARIADB_VERSION 5.5.55+maria-1~trusty

# Create mysql user and group
RUN groupadd -r mysql && useradd -r -g mysql mysql

# Install needed dependencies
RUN apt-get update && apt-get install -y --no-install-recommends software-properties-common && rm -rf /var/lib/apt/lists/*

# Add the MariaDB PGP key to verify their Debian packages.
RUN apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db

# Add MariaDB's repository. We …
Run Code Online (Sandbox Code Playgroud)

mysql mariadb docker dockerfile

3
推荐指数
1
解决办法
1万
查看次数

将haskel中的所有函数参数作为列表

haskell中有没有办法将所有函数参数作为列表获取.

让我们假设我们有以下程序,我们想要添加两个较小的数字,然后减去最大的数字.假设,我们无法改变函数的定义foo :: Int -> Int -> Int -> Int.有没有办法将所有函数参数作为列表获取,而不是构造一个新列表并将所有参数作为所述列表的元素添加?更重要的是,是否存在一种独立于参数数量的一般方法?

例:

module Foo where
    import Data.List

    foo :: Int -> Int -> Int -> Int
    foo a b c = result!!0 + result!!1 - result!!2 where result = sort ([a, b, c])
Run Code Online (Sandbox Code Playgroud)

haskell

3
推荐指数
1
解决办法
270
查看次数

Symfony 实体 - 在多对多连接中订购加入的实体

所以假设我们使用 aUser和 aTicket类。他们是正常的实体,没什么特别的。

User 类包含以下几行:

/**
 * @ORM\ManyToMany(targetEntity="Ticket", mappedBy="collaborateurs")
 **/
private $tickets;
Run Code Online (Sandbox Code Playgroud)

Ticket 类包含以下内容:

/**
 * @ORM\ManyToMany(targetEntity="User", inversedBy="tickets")
 * @ORM\JoinTable(name="users_to_tickets")
 **/
private $collaborateurs;
Run Code Online (Sandbox Code Playgroud)

要获取用户拥有的所有票证,我只需调用getTickets()Symfony 创建的函数即可。至于好。的Ticket类有一些额外的字段,如updated它是一种DateTime场或者status是一个整数。我想将这些票按status DESCupdated DESC

我知道我可以在存储库中创建一个函数,例如findTicketsByUserOrderedByFooBar($user),但我想知道是否有更好的方法。

php mysql join symfony doctrine-orm

2
推荐指数
1
解决办法
661
查看次数

在页面上显示所有 Bootstrap Modals 的事件

每当打开 Bootrap 模式时,我都会尝试做一些事情(在这种情况下是一些统计数据)。

我知道,我可以将这样的事件侦听器添加到模态:

$('#modal-content').on('shown.bs.modal', function() {
   alert('do something');
});
Run Code Online (Sandbox Code Playgroud)

但是有没有办法让页面上的所有模态都有一个监听器?额外的问题:即使对于那些被 Javascript 插入的人?

我想过这样的事情:

jQuery('.modal[role="dialog"]').on('show.bs.modal', function() {
   alert('do something');
});
Run Code Online (Sandbox Code Playgroud)

但我希望有一种更好的方法和一些东西可以用于由 Javascript 插入的模态。

javascript jquery twitter-bootstrap bootstrap-modal twitter-bootstrap-3

2
推荐指数
1
解决办法
1467
查看次数

在 Symfony 中注入“容器”

由于 Symfony 5.1 通过自动装配注入容器已Psr\Container\ContainerInterface被弃用,请参阅https://symfony.com/doc/current/service_container.html#public-versus-private-services

如果服务仍然需要访问容器,将来是否需要手动注入,或者是否有其他更方便的注入方式?

一种选择是使用按名称自动装配并注入它,只要有一个名为 的变量$container,但这感觉像是一种黑客攻击。

问题:如果在 Symfony 5.1+ 中服务仍然依赖于容器,那么授予服务访问容器的最佳实践是什么?

php dependency-injection autowired symfony

-1
推荐指数
1
解决办法
1541
查看次数