什么是可取的:一个函数,决定它是否应该做任何事情,或决定是否调用该函数?
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) 如何利用准备好的语句来提高性能?我知道如果我把它放在一个循环中,这样的事情可能会有好处:
SELECT `Name` FROM `Hobbits` WHERE `ID` = :ID;
Run Code Online (Sandbox Code Playgroud)
我读过使用准备好的语句循环比不使用循环要快,但否则准备好的语句会稍微降低性能。那么 - 这个循环有多大?
如果我在代码的开头运行一个复杂的 SQL 查询,并在最后用一个不同的参数重复它 - 第二个查询会运行得更快吗?(我们为每个页面加载使用一个连接)。缓存查询是否有限制,所以我最好立即重复我的查询?
使用完全相同的参数(重新加载页面或 2 个用户)两次执行整个脚本怎么样?
我很乐意写单元测试,但是当我将它们一起运行时它们会发生冲突.我正在测试这个课程:
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) 我正在使用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;)前缀更好的方法.
非常感谢您的帮助!