我目前正在研究一个"正确的"URI验证器,目前这一切都归结为主机名验证; 剩下的并不是那么棘手.
我坚持使用IDN主机名标签(即包含Unicode;此时已经解码了可能的punycode编码字符串).
我的第一个想法基本上是一个不支持IDN的TLD正则表达式,而那些支持IDN的一个正则表达式.这可能基于Mozilla的支持IDN的TLD列表.分别
^[a-zA-Z0-9\-]+$
和^[a-zA-Z0-9\-\p{L}]+$
.但是,这不是一个理想的情况,因为每个IDN注册商都可以决定允许哪些字符.
我正在寻找的是各种TLD中允许的Unicode字符的正确,一致,最新的数据表.现在看起来我必须在俄罗斯和中国的注册网站上找到所有数据(这非常困难).
所以在我尝试自己收集所有这些数据之前,我想知道这样的列表是否已经存在.或者有更好的方法,最佳/常见的做法等?(我希望验证尽可能严格.)
在内部使用属性时,被认为是编写OOP类的最佳实践。
考虑以下课程;
<?php
Class Foo
{
/**
* @var null|string
*/
protected $_foo;
/**
* @return null|string
*/
public function getFoo()
{
return $this->_foo;
}
protected function _doSomething()
{
$foo = $this->_foo;
$result = null;
// ...
return $result;
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我在_doSomething()中使用属性_foo,尽管子类可以覆盖getFoo(),从而返回未存储回_foo的计算值;那是一个缺陷。
我该怎么办?
这两个选项都是防水的,但是我非常担心所有额外的功能调用,所以我倾向于使用选项1,但是选项2会更“真实OOP”。
另请阅读http://fabien.potencier.org/article/47/pragmatism-over-theory-protected-vs-private,其中也建议了选项2:/
另一个相关的问题;如果某个属性具有设置器,则该属性应为私有属性,强制最终开发人员在子类中使用它,还是应该是不成文的规则,程序员负责设置有效的属性值?
我正在寻找一些关于如何扩展现有的tinymce(4.x)插件的例子,例如"链接"插件.
链接插件打开一个对话框窗口......我想要做的是在打开对话框时添加一个事件并修改正文(用点击事件插入一些额外的HTML).
这样做似乎很有问题...我想避免一些"在顶部"代码$('#mce_13').click(...);
,而不是使用类似的东西
editor.on('DialogOpen', function(e) {
// if link dialog then
$(e.body).append('<div>My HTML</div>');
});
Run Code Online (Sandbox Code Playgroud)
然而,没有像onDialogOpen
...... 这样的事件是否有最佳实践来实现这一目标?
在PHP中,如果一个值被认为是"未知"(本身不是无效的),那么这会引发逻辑或运行时异常吗?
<?php
function foo($bar) {
// logic
if(!is_string($bar)) {
throw new \InvalidArgumentException('invalid *argument*');
}
if(strlen($bar) < 4) {
throw new \DomainException('invalid *bar*');
}
static $knownBars = array('bar1', 'bar2');
if(!in_array($knownBars)) {
throw new \DomainException('unknown *bar*');
//throw new \UnexpectedValueException('unknown *bar*');
}
// runtime
$bar;
}
Run Code Online (Sandbox Code Playgroud)
前两个例外是显而易见的,但最后一个例子对我来说仍然有点不清楚.两者似乎都有意义; 逻辑/域错误,因为我们期望定义的数据集之一,运行时/意外值错误,因为我们实际上得到了一个意外的值.
我应该扔哪一个?
另外,如果逻辑部分是单个setter方法,并且我们想用数据库查找替换静态数组(数据集),那么...由于数据库故障等原因,可以在逻辑代码中期望运行时异常吗?或者我们应该将数据库查找移动到运行时代码,如果"bar"被认为是未知的,还是会抛出逻辑异常吗?
我已配置magento使用SSL链接..
Base URL https://sub.domain.com/ Base Link URL {{secure_base_url}} Base ... URL {{secure_base_url}}.../ Use Secure URLs in Frontend: YES Use Secure URLs in Backend: YES
前端我有一些用Mage :: getUrl([...])构建的自定义链接
<?php
// link to CMS page
echo Mage::getUrl('help'); //-> http://sub.domain.com/help/
// link to customer account
echo Mage::getUrl('customer/account'); //-> httpS://sub.domain.com/customer/account/
?>
Run Code Online (Sandbox Code Playgroud)
为什么协议有区别?
//罗兰