小编Jan*_*old的帖子

PHP魔术方法示例

我从Zend PHP学习指南中得到了这个问题,但找不到合适的解释......

<?php
    class Magic {
        public $a = "A";
        protected $b = array("a"=>"A", "b"=>"B", "c"=>"C");
        protected $c = array(1,2,3);

        public function __get($v) {
            echo "$v,";
            return $this->b[$v];
        }
        public function __set($var, $val) {
            echo "$var: $val,";
            $this->$var = $val;
        }
    }

    $m = new Magic();
    echo $m->a.",".$m->b.",".$m->c.",";
    $m->c = "CC";
    echo $m->a.",".$m->b.",".$m->c;
?>
Run Code Online (Sandbox Code Playgroud)

根据指南,解决方案应为" b,c,A,B,C,c: CC,b,c,A,B,C".我无法弄清楚为什么 - 也许你呢?我的意图是$ m-> a的第一次调用会导致结果"a",但这显然是错误的......

php magic-methods zend-certification

10
推荐指数
1
解决办法
1459
查看次数

通过 hasOwnProperty 获取文件属性

我有一个 HTML5 文件上传对话/dropzone,它会给我这样的东西:

event.dataTransfer.files
Run Code Online (Sandbox Code Playgroud)

现在我看到为每个 File 对象设置了一些(强制性?)属性:

https://developer.mozilla.org/en-US/docs/Web/API/File

file.namefile.lastModifiedDate等等。我可以通过这种方式获取值

event.dataTransfer.files.item(0).name
Run Code Online (Sandbox Code Playgroud)

但不要以这种方式检查该属性是否确实存在:

event.dataTransfer.files.item(0).hasOwnProperty('name')
Run Code Online (Sandbox Code Playgroud)

我了解到检查属性是否存在是一个很好的做法,hasOwnProperty()但这不适合这里。为什么呢?是因为 file.name 在某种程度上是“强制性的”吗?但是为什么值只是存储在原型链的某个地方?

html javascript drag-and-drop

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

Javascript中的静态变量,只设置一次

我正在撕掉我的头发来完成这个...特别是对于html5检测脚本.我想要一个只设置一次并且不能再次覆盖的变量.就是这个:

var StaticConfiguration = {};
StaticConfiguration.Main = {
    _html5: null
}
StaticConfiguration.getVariable = function(name) {
    return StaticConfiguration.Main["_" + name];
}
StaticConfiguration.setVariable = function(name, value) {
    if(StaticConfiguration.Main["_" + name] == null) {
        StaticConfiguration.Main["_" + name] = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

首先,我定义一个包含所有这些变量的全局对象StaticConfiguration - 在我的例子中,只是"html5".我将它设置为null,因为我想在应用程序中设置它.为此,我打电话

StaticConfiguration.setVariable("html5", "true");
Run Code Online (Sandbox Code Playgroud)

然后就定了.如果我尝试再次设置它,它会失败 - 当然,因为_html5不再是null.所以我几乎使用下划线来"隐藏"静态变量.

这对我很有帮助.我希望这是一个很好的方法 - 请告诉我,如果不是:)

javascript oop variables getter setter

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