在此系统中,我们存储产品,产品图像(产品可能有许多图像),以及产品的默认图像.数据库:
CREATE TABLE `products` (
`ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`NAME` varchar(255) NOT NULL,
`DESCRIPTION` text NOT NULL,
`ENABLED` tinyint(1) NOT NULL DEFAULT '1',
`DATEADDED` datetime NOT NULL,
`DEFAULT_PICTURE_ID` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`ID`),
KEY `Index_2` (`DATEADDED`),
KEY `FK_products_1` (`DEFAULT_PICTURE_ID`),
CONSTRAINT `FK_products_1` FOREIGN KEY (`DEFAULT_PICTURE_ID`) REFERENCES `products_pictures` (`ID`) ON DELETE SET NULL ON UPDATE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8;
CREATE TABLE `products_pictures` (
`ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`IMG_PATH` varchar(255) NOT NULL,
`PRODUCT_ID` int(10) …Run Code Online (Sandbox Code Playgroud) class Testme()
{
public function testMe ($a)
{
if ($a == 1)
{
throw new Exception ('YAY');
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以它很容易测试,如果它抛出异常
/**
* @expectedException Exception
*/
public function test()
{
new Testme(1);
}
Run Code Online (Sandbox Code Playgroud)
但如果它什么都没做呢?
public function test()
{
new Testme(2);
?? ? ? ? ?
}
Run Code Online (Sandbox Code Playgroud) 我们可以检测用户是否更改了某些内容:
$('#item').change(function() {
alert('changed!');
});
Run Code Online (Sandbox Code Playgroud)
遗憾的是,有时我需要巧妙地称之为:$('#item').change()但在这种情况下,它也被视为"改变".有没有办法区分用户活动与手动活动?
例如,这是我输入的内容:
sdf
42342
xxcv
Run Code Online (Sandbox Code Playgroud)
.code() 将其转换为 sdf<br>42342<br>xxcv
或另一件事:
[{"_type":"ServerOperation","operationType":"ANNOUNCE"}]
Run Code Online (Sandbox Code Playgroud)
becames
<span class="message_content">[{"_type":"ServerOperation","operationType":"ANNOUNCE"}]</span>
Run Code Online (Sandbox Code Playgroud)
如何获得纯文本/纯文本?
我想在网站的每个链接上附加一个函数来更改参数.
如果没有jQuery,我怎么能这样做?
如何遍历每个链接(可能是一个DOM项)并调用它们上的函数?
我正在使用Phpunit.如果我只是运行我的测试:
phpunit --log-junit output.xml
这在一秒钟内运行.但如果我想要代码覆盖:
phpunit --coverage-html ./report --log-junit output.xml
然后非常慢,phpunit发送"从* .xml 读取配置"并挂起一分钟,然后开始执行测试
引用自:https://en.wikipedia.org/wiki/Law_of_Demeter
更正式地说,函数的Demeter法则要求对象O的方法m只能调用以下类型的对象的方法:[2]
O本身
m的参数
在m中创建/实例化的任何对象
O的直接组件对象
一个全局变量,可由O访问,范围为m
特别是,对象应该避免调用另一个方法返回的成员对象的方法
所以详细说明:
class O
{
private $c;
public function m($obj1)
{
$this->a(); // OK
$obj1->a(); // OK
(new C())->a(); // OK
$c->a(); // OK
$a = function() { };
$a(); // OK
}
private function a() {}
}
Run Code Online (Sandbox Code Playgroud)
现在第3条法律值得怀疑.所以我新创建了一个对象.但如果我而不是:
(new C())->a();
Run Code Online (Sandbox Code Playgroud)
我做:
$this->factory->createC()->a();
Run Code Online (Sandbox Code Playgroud)
它还有效吗?一个普通的课程被实例化,只是new一个工厂而已.但是嘿!该法律说:
特别是,对象应该避免调用另一个方法返回的成员对象的方法
按此规则,工厂方法失败!怎么办?它真的失败了吗?
class Test
{
public $prop1;
public function __get(string $n)
{
echo '__GET: '.$n.' - but why?<br>';
die;
}
}
$t = new Test();
$x1 = new \stdClass();
$t->prop2 = &$x1;
echo '.';
die;
Run Code Online (Sandbox Code Playgroud)
在这里您可以看到,我创建了一个stdClass对象,尝试将其传递给一个不存在的变量,然后__get()执行 - 尽管我只是尝试写入它,而不是读取它。如果我没有die()这样做,我就会得到Indirect modification of overloaded property has no effect例外。
如果我有这个(没有参考)
class Test
{
public $prop1;
public function __get(string $n)
{
echo '__GET: '.$n.' - but why?<br>';
die;
}
}
$t = new Test();
$x1 = new \stdClass(); …Run Code Online (Sandbox Code Playgroud) 在我的产品网站上,Firefox有时会"检测不到"我的CSS和Javascript代码中的更改.而是它加载旧版本,所以我似乎需要清除缓存.在这种情况下,我该怎么办?这与最新的Firefox(撰写本文时为16.0.1)有关.
编辑!
我忘了说localhost css文件的错误.我的意思是,这是一个旧的js文件,我更新它,上传它,并在产品服务器上firefox认为它是localhost文件.我包含文件的方式:
<link rel="stylesheet" href="/xyz.css" type="text/css" />
Run Code Online (Sandbox Code Playgroud)