小编zer*_*kms的帖子

linq2sql:单例或使用,最佳实践

当linq2sql使用(在asp.net mvc应用程序中)时,首选的做法是:为DataContextlike 创建"singleton" :

partial class db
{
    static db _db = new db(global::data.Properties.Settings.Default.nanocrmConnectionString, new AttributeMappingSource());

    public static db GetInstance()
    {
        return _db;
    }
}
Run Code Online (Sandbox Code Playgroud)

或者在需要时检索新实例using:

using (db _db = new db())
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

使用using会给代码带来一些限制.所以我更喜欢使用单身之一.这是一种奇怪的做法吗?

UPD:
解释为什么我使用单身人士:

public class UserGroupRepository
{
    public static IQueryable<Group> RolesFor(string username)
    {
        User user = UserRepository.WithUsername(username);

        return from g in db.GetInstance().Groups
                join ug in db.GetInstance().UsersGroups on g.Id equals ug.GroupId
                where ug.UserId == user.Id
                select g;
    }
} …
Run Code Online (Sandbox Code Playgroud)

singleton linq-to-sql

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

phpunit模拟全面的文档

有什么是模拟以及如何使用它们的描述:http://www.phpunit.de/manual/current/en/test-doubles.html

但所有可能的方法,如不全面的解释$this->any(),$this->once(),$this->equalTo()

所以我正在寻找Mock生成API

PS:是的,我知道我可以在消息来源中查看它,但我正在寻找一个在线API文档

php phpunit

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

如何在Doctrine 2中为1:1关系指定多个连接条件

文件说明:

class Cart
{
    // ...

    /**
     * @OneToOne(targetEntity="Customer", inversedBy="cart")
     * @JoinColumn(name="customer_id", referencedColumnName="id")
     */
    private $customer;

    // ...
}
Run Code Online (Sandbox Code Playgroud)

这个注释代表了这样的sql:

JOIN Customer c ON c.id = cart.customer_id
Run Code Online (Sandbox Code Playgroud)

问题是我需要在那里添加额外的比较,例如:

JOIN Customer c ON c.id = cart.customer_id AND c.anotherField = <constant>
Run Code Online (Sandbox Code Playgroud)

有什么解决方案吗?

UPD:

我现在需要的真正的附加条件是 <const> BETWEEN c.f1 AND c.f2

php doctrine doctrine-orm

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

phpunit selenium2扩展中的显式等待

对于C#,有一种方法可以编写一个语句来等待页面上的元素出现:

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement myDynamicElement = wait.Until<IWebElement>((d) =>
    {
        return d.FindElement(By.Id("someDynamicElement"));
    });
Run Code Online (Sandbox Code Playgroud)

但有没有办法在phpunit的selenium扩展中做同样的事情?

注1

我发现的唯一的事情是$this->timeouts()->implicitWait(),但显然它不是我想要的.

笔记2

这个问题是关于Selenium2和PHPUnit_Selenium2相应的扩展.

php testing selenium phpunit selenium-webdriver

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

以线程安全的方式创建文件

我有一个文件名数组,每个进程只需要创建和写入一个文件.

这就是我的意思:

foreach ($filenames as $VMidFile) {
    if (file_exists($VMidFile)) { // A
        continue;
    }

    $fp = fopen($VMidFile, 'c'); // B

    if (!flock($fp, LOCK_EX | LOCK_NB)) { // C
        continue;
    }

    if (!filesize($VMidFile)) { // D
        // write to the file;

        flock($fp, LOCK_UN);
        fclose($fp);
        break;
    }

    flock($fp, LOCK_UN);
    fclose($fp); // E
}
Run Code Online (Sandbox Code Playgroud)

但我不喜欢我依靠的filesize.

有什么建议以另一种(更好的)方式做到这一点?

UPD:添加标签以便轻松讨论

UPD 2:我正在使用,filesize因为我没有看到任何其他可靠的方法来检查当前线程是否创建了文件(因此它还是空的)

UPD 3:解决方案应该是无条件竞赛.

php locking file-locking thread-safety

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

为什么给定的语法在mysql中有效?

另一个答案中,我发现了一种奇怪的语法:

(SELECT * FROM `articles` 
 WHERE date >= UNIX_TIMESTAMP(DATE(NOW() - INTERVAL 30 DAY))
 ORDER BY `views` DESC 
 LIMIT 20
) ORDER by `views` ASC
Run Code Online (Sandbox Code Playgroud)

这虽然是由mysql执行的.

为什么我认为它应该失败:

  1. 子查询没有别名
  2. 整个查询缺少SELECT条款

我发现运行意外,并没有解释为什么它的工作原理.

它不符合https://dev.mysql.com/doc/refman/5.5/en/select.html上定义的语法

那么,为什么它有效?任何参考?

mysql sql

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

让我们分享我们的emacs php配置

我是新手emacs,我认为如果你分享你在日常php工作中使用的配置会很好.

php emacs php-mode

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

MySQL:为什么'FOO'没有被优化掉?

MySQL 5.5.28.我有两个表Person,Message后者有一个外键给前者.每个表都有id主键列,Person表中还有一个personId(唯一)索引的列.

下面的查询应该利用personId密钥索引,但是MySQL需要扫描整个Message表,原因如下:

mysql> EXPLAIN SELECT `m`.*
    -> FROM
    ->   `Message` AS `m`
    -> LEFT JOIN
    ->   `Person` AS `p` ON (`m`.`person` = `p`.`id`)
    -> WHERE
    ->   'M002649397' IS NULL OR
    ->   `p`.`personId` = 'M002649397';
+----+-------------+-------+--------+---------------+---------+---------+----------------+--------+-------------+
| id | select_type | table | type   | possible_keys | key     | key_len | ref            | rows   | Extra       |
+----+-------------+-------+--------+---------------+---------+---------+----------------+--------+-------------+
|  1 | SIMPLE      | m     | ALL …

mysql

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

symfony/console组件的可变数量选项

如何配置symfony/console接受动态选项列表?

也就是说 - 选项的名称在开发步骤中是未知的,因此我需要一个应用程序来接受所有内容并使用标准公开它$input->getOption.

任何机会都可以轻松完成(不会在百万个地方乱砍组件)?

我的尝试包括扩展ArgvInputInputDefinition类,但由于各种原因(它们是客观的和symfony/console组件实现特定的)它们失败了.简而言之:前者需要多次调用解析; 后者 - 在多个地方实例化,所以我找不到合适的方法来注入它.

php symfony

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

为什么这段代码不会抛出StackOverflow异常

在clojure v1.6.0中,此代码只运行并占用一个核心的100%:

(defn average [x y] (/ (+ x y) 2))

(defn improve [guess x]
  (average guess (/ x guess)))

(defn sqrt-iter [guess x]
  (sqrt-iter (improve guess x) x))

(sqrt-iter 1 4)
Run Code Online (Sandbox Code Playgroud)

我希望它StackOverflowError立即抛出,但事实并非如此.

任何解释为什么会发生?

jvm clojure

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