小编Dan*_*Dan的帖子

19
推荐指数
3
解决办法
5264
查看次数

PHP依赖注入 - 疙瘩等. - 为什么使用关联数组与getter?

我们正在考虑将依赖注入容器集成到我们的项目中.我看过的每个DIC都使用关联数组和/或魔术方法.例如,这是来自Pimple页面的示例:

$container['session_storage'] = function ($c) {
    return new $c['session_storage_class']($c['cookie_name']);
};

$container['session'] = function ($c) {
    return new Session($c['session_storage']);
};
Run Code Online (Sandbox Code Playgroud)

是否有一个原因?我讨厌在我的代码中使用字符串,而不是将在某处显示的文字字符串.你失去了IDE的强大功能(这使代码难以维护,这是我们试图避免的事情!).

我的偏好更像是:

class Container {

    function getSessionStorage()
    {
        return new $this->getSessionStorageClass($this->getCookieName);
    }

    function getSession()
    {
        return new Session($this->getSessionStorage());
    }

}
Run Code Online (Sandbox Code Playgroud)

有没有理由不这样做?如果我们走这条路线,我是否会错过一些不会起作用的疙瘩?

php dependency-injection

17
推荐指数
2
解决办法
2482
查看次数

以编程方式确定图像的人类可读颜色(例如,红色,绿色等)

我试图想出一个脚本,它将以编程方式运行图像并告诉我它的主要颜色.

目前,脚本获取每个像素的RGB值.将它们与预定义规则进行比较,并尝试计算每种颜色的像素数.

我的问题是剧本有点受打击.有没有人知道更好的方法(可能使用更容易翻译成英语的不同颜色编码系统)或通过RGB定义颜色的现有规则集?

<?php
$file = "8629.jpg";

$colors = array("Red" => array("rel" => true, "r" => 0.65, "g" => 0.09, "b" => 0.25, "var" => 0.3),
                "Blue" => array("rel" => true, "r" => 0.21, "g" => 0.32, "b" => 0.46, "var" => 0.3),
                "Green" => array("rel" => true, "r" => 0, "g" => 0.67,"b" =>  0.33, "var" => 0.3),
                "Black" => array("rel" => false, "r" => 0, "g" => 0,"b" =>  0, "var" => 30),
                "White" => array("rel" => false, …
Run Code Online (Sandbox Code Playgroud)

php colors

8
推荐指数
1
解决办法
1686
查看次数

避免使用幻数而不创建依赖关系

我正在为我正在开发的API创建一个错误管理器.这个想法是它提供了一个可以从API返回的错误代码存储,确保以相同的方式处理不同调用中的相同错误(例如,请求中缺少所需的值).

我最初的方法是:

$this->_errorManager->setError(ErrorCodes::REQUIRED_FIELD);
Run Code Online (Sandbox Code Playgroud)

但是,这会在我想要设置错误的任何地方创建对错误代码类的依赖.

替代方案是:

$this->_errorManager->setError(100);
Run Code Online (Sandbox Code Playgroud)

但是现在我的代码中间有一个数字,但没有任何意义.

虽然我可以想到这个特定问题的解决方案,但是在其他情况下我会想要使用"枚举"而我想不出一个没有紧密结合类的解决方案.

有没有更好的方法来做到这一点或采取不同的方法来消除魔数?或者是我必须接受并根据具体情况考虑的紧密耦合?

php enums dependency-injection tightly-coupled-code

8
推荐指数
1
解决办法
214
查看次数

现有的Javascript框架对Typescript有意义吗?

我们即将开始研究新的Web应用程序.我们几乎100%的开发将在Typescript而不是Javascript中完成.

我已经开始研究对应用程序有意义的框架/代码结构.显然,大多数这些框架都是用Javascript编写的.我担心这些框架的设计考虑到了Javascript的局限性,而不是强类型模块化的Typescript(例如Backbone的事件是字符串名称).

这些框架是否仍然值得用于它们带来的结构/实用程序?我们是否最终要努力使Javascript框架以Typescript方式运行?

javascript frameworks backbone.js ember.js typescript

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

精炼混合到Flow中的已知对象类型

我们正在尝试在Flow中进行类型细化,以防止在外部接口上进入应用程序的值.要做到这一点,我们正在使用mixed然后尝试改进已知类型,但Flow并不容易!

以下似乎应该可以工作,我已经验证了mixed类型值与类型的要求相匹配response.

type Response = { head: string }

const refineToResponse = (value: mixed): ?Response => {   
  if (value
    && typeof value === "object"
    && typeof value.head === "string") {

    return value;   
  }

  return null; 
};
Run Code Online (Sandbox Code Playgroud)

但我只是得到一个非常无益的错误消息:

16:     return value;
               ^^^^^ object. This type is incompatible with the expected return type of
11: const refineToResponse = (value: mixed): ?Response => {
                                              ^^^^^^^^ object type   
Run Code Online (Sandbox Code Playgroud)

属性head不兼容:

 11: const refineToResponse = (value: mixed): ?Response …
Run Code Online (Sandbox Code Playgroud)

javascript flowtype

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