小编Pee*_*rBr的帖子

条件是否应该在函数/方法的内部或外部

什么是可取的:一个函数,决定它是否应该做任何事情,或决定是否调用该函数?

function x() {
    if ($userIsLoggedIn) {
        alwaysHelloUser();
    }

    if ($visitorRegion != 'US') {
        alwaysDisplayNoInternationalShipping();
    }

    if ($day == 'Sunday') {
        alwaysLockDownStore();
    }
}

function alwaysLockDownStore() {
    //close store
    //offer alternative store
    //show opening hours
    //display form for user leaving order for next day
    exit("Sorry, we are closed!");
}
Run Code Online (Sandbox Code Playgroud)

要么

function y() {
    perhapsSayHelloUser($user);
    maybeDisplayNoInternationalShipping($region);
    sometimesLockDownStore($day);
}

function sometimesLockDownStore($day) {
    if ($day == 'Sunday') {
        //close store
        //offer alternative store
        //show opening hours
        //display form for user leaving order for …
Run Code Online (Sandbox Code Playgroud)

php

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

PHP PDO:准备好的 mysql 查询缓存多长时间?

如何利用准备好的语句来提高性能?我知道如果我把它放在一个循环中,这样的事情可能会有好处:

SELECT `Name` FROM `Hobbits` WHERE `ID` = :ID;
Run Code Online (Sandbox Code Playgroud)

我读过使用准备好的语句循环比不使用循环要快,但否则准备好的语句会稍微降低性能。那么 - 这个循环有多大?

如果我在代码的开头运行一个复杂的 SQL 查询,并在最后用一个不同的参数重复它 - 第二个查询会运行得更快吗?(我们为每个页面加载使用一个连接)。缓存查询是否有限制,所以我最好立即重复我的查询?

使用完全相同的参数(重新加载页面或 2 个用户)两次执行整个脚本怎么样?

php mysql pdo

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

PHPUnit:在模拟之后包含类

我很乐意写单元测试,但是当我将它们一起运行时它们会发生冲突.我正在测试这个课程:

class MyClass {

    public function sayHello() {
        return 'Hello world';
    }
}
Run Code Online (Sandbox Code Playgroud)

使用这个测试.所有测试都有这样的结构:

class MyClassTest extends PHPUnit_Framework_TestCase {
    private $subject;

    public static function setUpBeforeClass() {
        require_once('path/to/MyClass.php');
    }

    public function setUp() {
        $this->subject = new MyClass();
    }

    public function testSayHello() {
        $this->assertEquals('Hello world', $this->subject->sayHello());
    }
}
Run Code Online (Sandbox Code Playgroud)

MyClassTest自己运行得很好.但PHPUnit会崩溃,因为我重新启动了类,如果另一个测试模拟MyClass并且碰巧先运行:

class Inject {

    private $dependency;

    public function __construct(MyClass $myClass) {
        $this->dependency = $myClass;
    }

    public function printGreetings() {
        return $this->dependency->sayHello();
    }
}

class InjectTest extends PHPUnit_Framework_TestCase {

    public …
Run Code Online (Sandbox Code Playgroud)

php phpunit unit-testing

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

PDOStatement :: fetch()和重复的字段名称

我正在使用MySQL和PHP 5.3.8开发Web应用程序.我们有一种机制可以将简化的查询指令转换为完整的查询字符串,包括连接.

由于我无法知道哪些(规范化的)表将被连接以及它们的字段被调用,因此可能存在重复的字段名称.执行时PDOStatement::fetch(PDO::FETCH_ASSOC),我得到一个相关的字段名称数组:

$test = $this->DBConnection->prepare("SELECT `events`.`Title`, `persons`.`Title` FROM `events` JOIN `persons` ON `events`.`HostID` = `persons`.`ID`;");
$test->execute();
$test->fetch();
Run Code Online (Sandbox Code Playgroud)

但我无法区分重复的字段名称,例如"标题".更糟糕的是,重复相互覆盖:

array('Title' => 'Frodo Baggins');
Run Code Online (Sandbox Code Playgroud)

在过去的糟糕时期,我跑到mysql_fetch_field()每个领域,为每个领域拿到桌子.请告诉我,有一种比添加字段(SELECT events.Title AS eventsTitle;)前缀更好的方法.

非常感谢您的帮助!

php pdo

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

标签 统计

php ×4

pdo ×2

mysql ×1

phpunit ×1

unit-testing ×1