小编Rol*_*sen的帖子

IDN主机标签中允许哪些Unicode字符?

我目前正在研究一个"正确的"URI验证器,目前这一切都归结为主机名验证; 剩下的并不是那么棘手.

我坚持使用IDN主机名标签(即包含Unicode;此时已经解码了可能的punycode编码字符串).

我的第一个想法基本上是一个不支持IDN的TLD正则表达式,而那些支持IDN的一个正则表达式.这可能基于Mozilla的支持IDN的TLD列表.分别 ^[a-zA-Z0-9\-]+$^[a-zA-Z0-9\-\p{L}]+$.但是,这不是一个理想的情况,因为每个IDN注册商都可以决定允许哪些字符.

我正在寻找的是各种TLD中允许的Unicode字符的正确,一致,最新的数据表.现在看起来我必须在俄罗斯和中国的注册网站上找到所有数据(这非常困难).

所以在我尝试自己收集所有这些数据之前,我想知道这样的列表是否已经存在.或者有更好的方法,最佳/常见的做法等?(我希望验证尽可能严格.)

unicode tld idn

9
推荐指数
1
解决办法
1928
查看次数

使用类获取器或类属性?(PHP)

在内部使用属性时,被认为是编写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. 将getter标记为final,在内部使用属性(无需额外的函数调用,强制最终开发者将_foo用作属性,因为受保护)
  2. 在内部使用getFoo(),将_foo标记为私有(额外的函数调用)

这两个选项都是防水的,但是我非常担心所有额外的功能调用,所以我倾向于使用选项1,但是选项2会更“真实OOP”。

另请阅读http://fabien.potencier.org/article/47/pragmatism-over-theory-protected-vs-private,其中也建议了选项2:/

另一个相关的问题;如果某个属性具有设置器,则该属性应为私有属性,强制最终开发人员在子类中使用它,还是应该是不成文的规则,程序员负责设置有效的属性值?

php getter properties class

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

Tinymce 4.x扩展插件

我正在寻找一些关于如何扩展现有的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...... 这样的事件是否有最佳实践来实现这一目标?

tinymce tinymce-4

4
推荐指数
1
解决办法
2752
查看次数

PHP运行时或逻辑异常?

在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"被认为是未知的,还是会抛出逻辑异常吗?

php logic runtime exception

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

Magento SSL链接

我已配置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)

为什么协议有区别?

//罗兰

php ssl magento geturl

2
推荐指数
1
解决办法
9303
查看次数

标签 统计

php ×3

class ×1

exception ×1

getter ×1

geturl ×1

idn ×1

logic ×1

magento ×1

properties ×1

runtime ×1

ssl ×1

tinymce ×1

tinymce-4 ×1

tld ×1

unicode ×1