小编tre*_*nik的帖子

扩展PHP静态类

我已经在这个领域挣扎了几天,我已经得出结论,但由于结论不是我想要的,在我放弃之前,我会试着看看其他人说的话.信仰最后死了......

假设我们有一个超类(称为"超级")和一个子类(称为"Sub").

class Super {
    protected static $title = 'super';
    public static function get_class_name()        
    {
        echo __CLASS__;
    }
    public static function get_title()
    {
        echo self::$title;
    }
}
class Sub extends Super {
    protected static $title = 'sub';
}
Run Code Online (Sandbox Code Playgroud)

现在,你可能会期望Sub扩展Super,Sub现在将继承所有Super的方法,但是,它似乎只接收Sub的方法的引用.

我这样说是因为如果我打电话:

Sub::get_class_name();
Run Code Online (Sandbox Code Playgroud)

输出是"超级",而不是"子".

如果我打电话:

Sub::get_title();
Run Code Online (Sandbox Code Playgroud)

再次,输出是"超级",我甚至在Sub中声明了$ title.

所以这意味着当我调用一个继承的静态函数时,函数的作用域将是超类,而不是被调用的函数(即使你打印了回溯,它也会显示调用是在超类上进行的),并且为了获得作为调用的子类的范围,我需要在该子类内重新声明该方法.那么这种失败的目的是延伸课程,不是吗?

所以我的问题是,我可以扩展一个静态类,调用一个继承的方法并具有子类的范围吗?或者至少能够识别它的类名?如果没有,我为什么要扩展静态类?

谢谢!

php oop class extending

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

詹金斯与Jest整合

有没有办法让Jenkins集成在基于Jasmine构建的Javascript Jest测试框架中?

我试图将Jest与jasmine-reporter集成,但是没有设法获得JUnit XML输出.我安装了Jasmine 1.3的记者npm install jasmine-reporters@~1.0.0,然后在我的setupTestFrameworkScriptFile:

require('jasmine-reporters');

jasmine.VERBOSE = true;

jasmine.getEnv().addReporter(new jasmine.JUnitXmlReporter({
  savePath: "output/"
}));
Run Code Online (Sandbox Code Playgroud)

当我跑步时,jest我得到NodeJS attempt: Arguments to path.join must be stringsNodeJS attempt: Object [object Object] has no method 'join'.

javascript jasmine jestjs

8
推荐指数
1
解决办法
7223
查看次数

使用PhantomJS生成单页.pdf

我正在使用PhantomJS将可变高度的网页导出为pdf.由于pdfs可以有任何页面大小(更像是比率,因为它是矢量),我想以一种在pdf中创建单个页面的方式导出它,以适应整个网页.

幸运的是,使用evaluatePhantomJS方法,我可以轻松检测页面高度

page.includeJs('jquery.js', function() {
  var pageHeight = page.evaluate(function() {
    return $('#content').height();
  });
});
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何使用它对我有利.viewportSize似乎没有以任何方式影响这个,因为我不是渲染视口而是整个文档.我把它设置为固定的{width: 800, height: 800}

所以我不能把头围绕在paperSize尺寸上.将高度设置为返回的pageHeight将呈现1.5x页面,所以我尝试调整宽度,但它并没有真正加起来我能理解的任何公式.

如何实现这一点的任何想法,或者你有更多的洞察paperSize属性和从页面呈现的像素大小的边界之间的相关性

javascript pdf-generation phantomjs

7
推荐指数
1
解决办法
6180
查看次数

如何根据TypeScript中的其他类型使对象属性可选?

我认为解释我的场景的最好方法是使用代码:

interface IPluginSpec {
  name: string;
  state?: any;
}

interface IPluginOpts<PluginSpec extends IPluginSpec> {
  name: PluginSpec['name'];
  // How to require opts.initialState ONLY when PluginSpec['state'] is defined?
  initialState: PluginSpec['state'];
}

function createPlugin<PluginSpec extends IPluginSpec>(
  opts: IPluginOpts<PluginSpec>,
) {
  console.log('create plugin', opts);
}

interface IPluginOne {
  name: 'pluginOne';
  // Ideally state would be omitted here, but I can also live with having to
  // define "state: undefined" in plugins without state
  // state: undefined;
}

// Error: Property 'initialState' is missing in …
Run Code Online (Sandbox Code Playgroud)

typescript conditional-types

7
推荐指数
1
解决办法
3323
查看次数

jQuery如何创建Array-Objects?

起初我以为它只是在返回它之前将obj [0],obj [1],obj [2]等分配给jQuery对象,并且手动分配长度.但不,因为console.log记录数组而不是对象.

我快速浏览了jQuery源码,但由于我不熟悉它,所以我没有轻易破解它.jQuery.makeArray首先弹出,但事实证明它与我正在寻找的相反,你实际上通过使用它失去了对象方法.

我的第一个猜测是首先启动数组,然后将对象中的所有属性和方法复制到它.

有没有jQuery源代码经验的人对此有明确的答案?

javascript arrays jquery object

6
推荐指数
3
解决办法
2868
查看次数

Wordpress自定义类型永久链接包含分类法slug

我正在尝试为自定义类型创建一个永久链接模式,其中包括一个分类法.分类法名称从一开始就是已知的(所以我不是要添加或混合所有的分类法,只是特定的分类法),但当然,价值将是动态的.

通常,自定义类型永久链接是使用rewritearg和slugparam 构建的,但我不知道如何在其中添加动态变量.

http://codex.wordpress.org/Function_Reference/register_post_type

我猜测需要一个自定义解决方案,但我不确定最好的非侵入式方法是什么.

是否有一个已知的做法或最近有人建造类似的东西?我正在使用WP 3.2.1 btw.

wordpress permalinks taxonomy custom-type

6
推荐指数
1
解决办法
6327
查看次数

检查对象是否可在JavaScript中序列化的可靠方法

是否有已知的方法或库已经有一个帮助器来评估对象是否可以在JavaScript中序列化?

我尝试了以下但它没有涵盖原型属性,因此它提供误报:

_.isEqual(obj, JSON.parse(JSON.stringify(obj))
Run Code Online (Sandbox Code Playgroud)

还有另一个lodash功能可能让我更接近事实_.isPlainObject.但是,_.isPlainObject(new MyClass())返回false_.isPlainObject({x: new MyClass()})返回true,因此需要递归应用.

在我自己冒险之前,有没有人知道一种已经可靠的方法来检查是否JSON.parse(JSON.stringify(obj))真的会导致同一个对象obj

javascript serialization json

6
推荐指数
2
解决办法
2107
查看次数

检测浏览器功能和鼠标和触摸的选择性事件

我现在开始使用触摸事件一段时间了,但我偶然发现了一个很大的问题.到目前为止,我检查了是否支持触摸功能,并根据它来应用选择性事件.像这样:

if(document.ontouchmove === undefined){
    //apply mouse events
}else{
    //apply touch events
}
Run Code Online (Sandbox Code Playgroud)

但是,我的脚本在我的计算机上停止使用Chrome5(目前是测试版).我研究了一下,如我所料,在Chrome5(相对于旧的浏览器,火狐,IE等)document.ontouchmove不再undefined,但null.

起初我想提交一个错误报告,但后来我意识到:有些设备同时具有鼠标和触摸功能,所以这可能很自然,也许Chrome现在定义它,因为我的操作系统可能支持这两种类型的事件.

所以解决方案看起来很简单:应用BOTH事件类型.对?

那么问题现在发生在移动设备上.为了向后兼容并支持仅使用鼠标事件的脚本,移动浏览器也可能尝试触发它们(触摸时).因此,设置鼠标和触摸事件后,每次都可以调用某个处理程序两次.

有什么方法可以解决这个问题?是否有更好的方法来检查和应用选择性事件,或者我是否必须忽略浏览器有时同时触发触摸和鼠标事件时可能出现的问题?

javascript browser mouse events touch

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

在生产中记录 SQL 查询?

我对是否也在生产中记录 SQL 查询感到进退两难。

我不知道在 PHP 中写入文件有多慢。可能一些基准测试可以给出一些答案,但我想看看你们之前的想法。

什么会使或不会使过程变慢?或者它可以依赖什么?

php mysql sql transaction-log

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

chrome.devtools.inspectedWindow更改事件

Google Chrome扩展程序API使用chrome.devtools.inspectedWindow在当前打开的窗口中提供信息,但它不会在更改时提供事件.我可以刷新或重定向页面,我想要添加的DevTools面板通知.有这个方法吗?

想想Elements面板,它始终与当前DOM保持同步.这可能很难实现,以便在发生DOM突变时保持最新状态,但我希望至少在加载新页面时得到通知(可能在document.onload事件上,为什么不)

关于如何实现这一点的任何想法,谢谢?

google-chrome-extension google-chrome-devtools

5
推荐指数
2
解决办法
1728
查看次数