我不确定这是否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)
如果有一个更好的方法进行此检查,如果需要调用模态,请指向我正确的方向,我正在寻找一个onState
或onRender
函数,或我可以分配build
给要在渲染上调用的函数的回调但不是能够找到一个.
编辑:它在这里接缝他们有类似的问题:Flutter重定向到initState上的页面
在 PHP 8.1 中,BackedEnum提供了from
andtryFrom
方法来从值获取枚举。如何通过无支持的枚举来实现相同的效果?
支持枚举示例:
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) 我们目前正试图决定,我们应该在 Symfony 和 Doctrine 中使用什么缓存。它背后的想法是通过缓存值来减少负载和数据库调用。有问题的缓存系统是:memcached、APCu和redis。
我们目前最喜欢的是 APCu,因为 memcache 可能会有一个小的开销,因为它可以作为分布式缓存运行,但是它也允许将 PHP 会话直接存储在 memcache 中。Redis 接缝“太多了”,因为它可以用作数据库,所以可能会有很多开销,这就留下了 APCu。
我们目前使用的 Symfony 版本是 2.8,我们可能会在不久的将来更新到 3.x,以便更好地集成缓存(对于3.1和3.3,我们可能会等待 Symfony 3.3 发布)
memcached 的优势很明显,它是分布式的,这意味着多个服务器可以访问它。然而,我们目前只在一台服务器上运行 Symfony 应用程序,还没有计划改变这一点。
问题:三种不同缓存系统的优缺点是什么?特别是,当使用 Symfony 2.8 与使用 Symfony 3.x 时?什么是负载,它们会放在系统上吗?
如果问题是基于意见的,请随时关闭它。
我有一个名为实体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) 我希望构建过程中的一个步骤仅在分支上运行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
我更改任何内容时,它也会在分支上运行。
问题:是否有一种方法可以仅运行此步骤,同时满足两个条件(分支和更改)?
使用NetBeans在我的Vagrant虚拟服务器上工作时遇到一些麻烦。我试图在远程服务器上创建一个新的PHP项目,然后NetBeans要求我提供连接,所以我创建了一个新连接。对于我输入的主机名127.0.0.1
,作为用户vagrant
我链接了私钥文件(由vagrant生成),并填写了初始目录。
当我尝试这样连接时,它会询问我无业游民的密码(我没有,因为它应该提供私钥文件...)。使用Vagrant 2222
,22
无论如何我都需要连接到端口而不是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软件包。
我的当前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) 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) 所以假设我们使用 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 DESC
和updated DESC
我知道我可以在存储库中创建一个函数,例如findTicketsByUserOrderedByFooBar($user)
,但我想知道是否有更好的方法。
每当打开 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
由于 Symfony 5.1 通过自动装配注入容器已Psr\Container\ContainerInterface
被弃用,请参阅https://symfony.com/doc/current/service_container.html#public-versus-private-services
如果服务仍然需要访问容器,将来是否需要手动注入,或者是否有其他更方便的注入方式?
一种选择是使用按名称自动装配并注入它,只要有一个名为 的变量$container
,但这感觉像是一种黑客攻击。
问题:如果在 Symfony 5.1+ 中服务仍然依赖于容器,那么授予服务访问容器的最佳实践是什么?
php ×4
symfony ×4
doctrine-orm ×3
join ×2
mysql ×2
apcu ×1
autowired ×1
caching ×1
dart ×1
docker ×1
dockerfile ×1
enums ×1
flutter ×1
gitlab-ci ×1
haskell ×1
javascript ×1
jquery ×1
many-to-many ×1
mariadb ×1
memcached ×1
netbeans ×1
netbeans-8 ×1
sftp ×1
vagrant ×1