小编lin*_*ogl的帖子

PHPDoc和后期(静态或动态)绑定

大多数PHP IDE依靠phpdoc来获取有关表达式类型的提示.然而,我经常使用这种模式,似乎没有涵盖:

class Control {
    private $label = '';

    /** @return ??? */
    public static function Make(){ return new static(); }

    /** @return ??? */
    public function WithLabel($value){  $this->label = $value;  return $this;  }

    /** @return void */
    public function Render(){ /* ... */ }
}

class Textbox extends Control {
   private $text = '';

    /** @return ??? */
    public function WithText($text){  $this->width = $text;  return $this;  }
}
Run Code Online (Sandbox Code Playgroud)

现在我可以使用这样的类:

Textbox::Make()           // <-- late static binding, returns Textbox
   ->WithLabel('foo')     // …
Run Code Online (Sandbox Code Playgroud)

php phpdoc late-binding late-static-binding php-ide

16
推荐指数
3
解决办法
4618
查看次数

使用XmlHttpRequest发送文件:Streaming?

我试图通过拖放上传大文件.我有这段Javascript代码:

xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.setRequestHeader('X-File-Name', file.name);
xhr.setRequestHeader('X-File-Size', file.size);
xhr.setRequestHeader('Content-Type', file.type);
xhr.send(file);
Run Code Online (Sandbox Code Playgroud)

where url是一个目标url的字符串,file是一个文件拖放后检索Blob到的(根据http://www.w3.org/TR/XMLHttpRequest2/#the-send-method).此代码适用于Chrome 12,Safari 5和Firefox 4,并在HTTP请求正文中发送文件的原始内容.

但是,如果文件足够大,则永远不会发送请求.相反,XMLHttpRequest对象触发和错误事件(没有任何有用的消息).在我的环境中,此限制为86Mb,但因机器而异.

Chrome的javascript控制台显示以下消息:

POST http://localhost/xfiles/xfiles.php undefined (undefined)
Run Code Online (Sandbox Code Playgroud)

这与我的代码无关(与较小的文件完美配合).

浏览器似乎在内存中并在发送之前读取整个文件.可能有一个内存不足的异常或类似的东西会停止进程.在任何情况下,都没有发送HTTP请求,因此可以肯定服务器的限制与此问题无关.

无论如何,阅读整个文件是浪费资源.

是否有任何方法以流方式逐字节发送文件,而不必先将其存储在内存中?

javascript streaming upload xmlhttprequest

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

XDebug可以单独跟踪探查器调用所花费的时间吗?

我使用XDebug作为PHP应用程序的分析器.我遇到了一个XDebug严重改变结果的情况,以至于它们没用.

这是一个演示问题的简化示例:

function foo(){ $x = 1; }
function bar(){ foo(); }
Run Code Online (Sandbox Code Playgroud)

测试A:

$t0 = microtime(true);
for ($i = 0; $i < 1000000; $i++) foo();
echo microtime(true) - $t0;
Run Code Online (Sandbox Code Playgroud)

测试B:

$t0 = microtime(true);
for ($i = 0; $i < 1000000; $i++) bar();
echo microtime(true) - $t0;
Run Code Online (Sandbox Code Playgroud)

所以,这些是我得到的结果(以秒为单位):

          profiler  | profiler  > profiler
          disabled  | enabled   > results
          --------------------------------------------------------------------
          output    | output    > total time   time in foo()   time in bar()
Test A    0.159     | 12.199    > 12.245       0.110           - (not …
Run Code Online (Sandbox Code Playgroud)

php performance profiler xdebug

11
推荐指数
1
解决办法
870
查看次数

子模块在github页面中的行为如何?

我有这个github存储库,它是我正在开发的一个开源项目的网页:

https://github.com/o8/o8.github.com

根据github的文档,这个存储库是特殊的,因为它每次收到推送时都会构建一个github-pages网站.该网站在http://o8.github.com下可用.这很好用:-).

但是,我的存储库包含该文件夹下的子模块/oxy.这是/.gitmodules使用公共url(git://github.com/linepogl/oxygen.git)在文件中声明的.我希望这个子模块中的所有文件也都包含在github-pages网站中.这不会发生,或者至少我不知道如何使其工作.

例如,有文件/oxy/hlp/index.html.我预计地址http://o8.github.com/oxy/hlp/index.html会指向此文件.相反,我得到404错误.

有任何想法吗?

github git-submodules

11
推荐指数
1
解决办法
1894
查看次数

野牛减少/减少

我是 Bison 解析的新手,我无法理解它是如何工作的。我有以下语法,其中我保留了最低限度的语法来突出问题。

%left '~'
%left '+' 
%token T_VARIABLE
%% 
start: expr;
expr: composite_expr | variable_expr;
variable_expr: T_VARIABLE;
composite_expr:   
     expr '+' expr      
   | '~' variable_expr   { do_something_1(); }
   | '~' composite_expr  { do_something_2(); }
;

%%
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我想'~'根据后面的表达式类型对运算符应用不同的函数。然而,这会产生2个reduce/reduce冲突。

当然,如果我像这样重写composite_expr规则......

composite_expr:   
     expr '+' expr      
   | '~' expr           { /* ??? */ }
;
Run Code Online (Sandbox Code Playgroud)

...然后就没有冲突了,但现在我不能调用 or ,do_something_1()因为do_something_2()我无法再判断exprisvariable_exprcomposite_expr

还有其他方法可以做到这一点吗?谁能解释为什么首先要减少/减少冲突?

请记住,这是一个精简版本,实际上,规则composite_expr很长。所以复制它是不可能的。

bison reduce-reduce-conflict

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

VB 6.0中的字符串(33,0)和C#中的等价物

UserName = String(33, 0)VB 6.0中的含义是什么,C#中的等价物是什么.

请帮助我在将VB 6.0代码转换为C#时遇到错误.

提前致谢.

c# vb6

4
推荐指数
2
解决办法
4964
查看次数