我如何将Bing Maps API与最新版本的RequireJS一起使用?远程脚本URL是:
http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0
我会加一个像这样的垫片吗?
require.config({
/* ... */
paths: {
'Microsoft.Maps': 'http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0'
},
shim: {
'Microsoft.Maps': {
deps: [],
exports: 'Microsoft'
}
}
});
Run Code Online (Sandbox Code Playgroud)
然后在我的模块中使用它:
define(['Microsoft.Maps'], function(Microsoft) {
/* ... */
});
Run Code Online (Sandbox Code Playgroud)
我想我的问题更多是关于如何使用RequireJS一般使用命名空间代码.文档没有涉及我能找到的任何例子.
我很好奇进行字符串转换的最高效的方法是什么。给定一个输入字符串和一组翻译,一般来说哪种方法最有效?我目前使用strtr(),但已经使用str_replace()数组等测试了各种循环方法。该strtr()方法在我的系统上进行了最快的基准测试,具体取决于翻译,但我很好奇是否有我还没有想到的更快的方法。
如果相关的话,我的特定用例涉及将 2 字节字符串转换为终端的 ANSI 颜色序列。例子:
// In practice, the number of translations is much greater than one...
$out = strtr("|rThis should be red", array('|r' => "\033[31m"));
Run Code Online (Sandbox Code Playgroud) 给出两个数组:
$foo = array('a', 'b', 'c');
$bar = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
Run Code Online (Sandbox Code Playgroud)
是否有内置的PHP函数来生成以下结果数组?
$result = array('a' => 1, 'b' => 2, 'c' => 3);
Run Code Online (Sandbox Code Playgroud)
我已经浏览了php.net上的数组函数列表,但似乎无法找到我正在寻找的内容.我知道如果需要我该怎么做,但我认为这可能是一个普遍的问题,可能有一个内置的功能,它做了它,并不想重新发明轮子.
当检查超全局类似$_GET或$_POST存在特定键的值时,是否有一种方法以更简洁的方式包含以下功能?
if (isset($_POST['foo']) && $_POST['foo'] !== '') {
// ...
}
Run Code Online (Sandbox Code Playgroud)
在isset()自身函数返回TRUE即使值是一个空字符串'',所以我不能使用.
使用just $_POST['foo'] !== ''将自己正常工作,但它会发出一个E_NOTICE未定义的索引,这是不可取的.
该empty()函数返回TRUE的值"0",这是一个有效的价值,所以我不能使用的,无论是.
我错过了一些明显的东西,或者这真的是最好/唯一的方法吗?
给定一个简化的表结构,如下所示:
CREATE TABLE t1 (
id INT,
num INT,
CONSTRAINT t1_pk
PRIMARY KEY (id),
CONSTRAINT t1_uk
UNIQUE (id, num)
)
Run Code Online (Sandbox Code Playgroud)
我可以使用这样的子查询来插入记录而不会导致竞争条件吗?
INSERT INTO t1 (
id,
num
) VALUES (
1,
(
SELECT MAX(num) + 1
FROM t1
)
)
Run Code Online (Sandbox Code Playgroud)
或者子查询不是原子的?我担心同时INSERT获取相同的值num然后导致唯一的约束违规.
我有一个类似于此的类(为简洁起见,删除了一些逻辑):
class FooCollection {
protected $_foos;
public function __construct() {
$this->_foos = new SplObjectStorage();
}
public function addFoo(FooInterface $foo) {
$this->_foos->attach($foo);
}
public function removeFoo(FooInterface $foo) {
$this->_foos->detach($foo);
}
}
Run Code Online (Sandbox Code Playgroud)
我想用PHPUnit 来测试addFoo()和removeFoo()方法,我想知道最好的策略是什么呢?据我所知,我只有几个选择:
hasFoo(FooInterface $foo)并在添加后检查此方法.getFoos()直接返回SplObjectStorage实例的方法,并$foo在添加后检查是否在其中.removeFoo($foo)之后addFoo($foo)并检查异常.$_foos公共财产并在添加后直接检查(坏,坏,坏......).选项#1和#2正在改变公共接口仅用于测试目的,我不确定我对此的看法.它们似乎是非常通用的,有用的方法,但在我的特定情况下,我从来不需要检查Foo集合中特定实例的存在,也不需要检索所有实例,所以它真的会只是臃肿.此外,似乎如果我在一次测试中测试界面的多个部分,我不是真的在测试一个"单位",但这或多或少只是一个哲学挂断.
选项#3对我来说似乎很尴尬.
选项#4是一个非常糟糕的主意,我甚至不应该列出它,因为即使在这里建议,我也不会这样做.
当容器的高度发生变化时,是否可以将动态/未知数量的复选框水平回流到列中?这是我的意思的简单图表:
高度= 180px(20px*9复选框):
[ ] Checkbox 1
[ ] Checkbox 2
[ ] Checkbox 3
[ ] Checkbox 4
[ ] Checkbox 5
[ ] Checkbox 6
[ ] Checkbox 7
[ ] Checkbox 8
[ ] Checkbox 9
Run Code Online (Sandbox Code Playgroud)
高度= 140px(20px*7复选框):
[ ] Checkbox 1 [ ] Checkbox 8
[ ] Checkbox 2 [ ] Checkbox 9
[ ] Checkbox 3
[ ] Checkbox 4
[ ] Checkbox 5
[ ] Checkbox 6
[ ] Checkbox 7
Run Code Online (Sandbox Code Playgroud)
高度= 100px(20px*5个复选框):
[ …Run Code Online (Sandbox Code Playgroud) 我最近与另一位开发人员就 PHP__isset()和__get()魔术方法之间的关系进行了简短的讨论。它是由我们拥有的一个类带来的,该类通过该__get()方法延迟加载其他对象(延迟加载意味着该属性在第一次访问之前不存在,此时对象被实例化并返回)。__isset()但是,对于尚未加载的属性应该返回什么,我们有不同的意见。该属性在技术上不存在(它不是set,或者至少,它是 set 但当前NULL),但是对它的调用在技术上也会成功(除非有任何异常)并返回一个非NULL值。
所以,我的问题是,在这种情况下,应该__isset()只是一个指示是否__get()会成功的同一个论点(TRUE如果__get()会成功,返回一个非NULL值)。或者,它是否应该在技术上表现得更好,并返回FALSE,因为数据尚不存在(即使第一次访问时它会存在)?
一个简单的例子:
class Foo {
protected $data;
public function __get($prop) {
if ($prop == 'bar') {
$this->data['bar'] = new Bar;
return $this->data['bar'];
}
}
public function __isset($prop) {
if ($prop == 'bar') {
// What goes here?
// return isset($this->data[$prop]) would mean
// that the first call to …Run Code Online (Sandbox Code Playgroud) 我接手的网站目前设置为使用.mincss文件的版本..min对用户来说很棒,但对于测试和开发来说非常糟糕.有没有办法使用sublime文本或其他文本编辑器,我可以将文本扩展为标准格式和间距?