我希望我的软件包附带一个内置的composer-plugin.
我有这样的结构:
composer.json
src/
...
plugin/
composer.json
src/
...
Run Code Online (Sandbox Code Playgroud)
根composer.json配置如下:
{
"name": "foo/bar",
"type": "library",
"autoload": {
"psr-4": {
"Foo\\Bar\\": "src/"
}
},
"repositories": [
{
"type": "path",
"url": "./tools",
"options": {
"symlink": false
}
}
],
"require": {
"foo/bar-plugin": "*"
}
}
Run Code Online (Sandbox Code Playgroud)
而内置的composer-plugin是plugin/composer.json这样的:
{
"name": "foo/bar-plugin",
"type": "composer-plugin",
"require": {
"composer-plugin-api": "^1",
"composer/composer": "^1",
"foo/bar": "*"
},
"autoload": {
"psr-4": {
"Foo\\Bar\\Plugin\\": "src/"
}
},
"extra": {
"class": "Foo\\Bar\\Plugin\\MyComposerPlugin"
}
}
Run Code Online (Sandbox Code Playgroud)
注意这里有一个双向依赖 - 插件依赖于foo/bar …
我想在 TypeScript 中使用 JSX 语法,但不想使用 React。
我在这里看到了其他相关问题的答案,但没有任何内容足够完整或详细,无法提供任何帮助。我已经阅读了本指南和手册中的JSX 章节,但没有多大帮助。我不明白语言功能本身是如何工作的。
我尝试检查 React 声明,但它对我来说太大了,无法吸收 - 我需要一个最小的、有效的示例来演示类型检查的元素、组件和属性。(它不需要工厂函数的有效实现,我最感兴趣的是声明。)
我至少想要一个能够实现以下工作且具有类型安全性的示例:
var el = <Ping blurt="ya"></Ping>;
var div = <div id="foo">Hello JSX! {el}</div>;
Run Code Online (Sandbox Code Playgroud)
JSX.IntrinsicElements我想我至少需要声明createElement()某种工厂函数,但这就是我所得到的:
declare module JSX {
interface IntrinsicElements {
div: flurp.VNode<HTMLDivElement>;
}
}
module flurp {
export interface VNode<E extends Element> {
id: string
}
export function createElement<T extends Element>(type: string, props?: any, ...children: (VNode<Element>|string)[]): VNode<Element> {
return {
id: props["id"]
};
}
}
class Ping {
// …Run Code Online (Sandbox Code Playgroud) 我有一个复杂的类层次结构,具有多个继承级别,我需要使用HQL查询该层次结构中的某些特定类型.
假设我有Cat,Dog和Monkey类,有一个共同的基类Animal.
我如何编写一个只选择其中一些的查询,比方说,Cat和Dog?
我还需要按某些动物属性进行排序或过滤 - 所以让我们说,动物的性别="男性"并按名称排序.
这可能吗?
tsvector在列中存储值时,对于没有搜索项的记录,我应该存储空值tsvector还是NULL值?
有关系吗?
存储空载体的性能或存储开销是否有任何差异?
换句话说,当基于例如可空title列的值更新向量时,我是否需要始终将其计算为to_tsvector(coalesce(title,''))(因为在给定参数时to_tsvector返回)或者它是否足够?NULLNULLto_tsvector(title)
我一直想知道如何使用PHP进行"真正的"(半)实时数据流传输.
可能的应用:聊天室,拍卖,游戏等
"真实",我的意思是数据不只是写在某处并且不断地进行轮询,而是以某种方式实际流式传输到客户端.
通过"半",我的意思是,只有从服务器到客户端的流是实时的,并且从客户端到服务器的消息不是.
对于客户端和服务器之间的通信,我想坚持使用普通HTTP(AJAX)而不是其他协议.
通过手动刷新输出缓冲区,可以使用HTTP流式传输到客户端.
问题是如何将该脚本连接到服务器端?
一旦连接,就进行阻塞读取,而不是轮询更改.
共享内存(shmop)扩展可以工作,但它不是跨平台的.
也许memcached会起作用吗?但是我不确定是否有办法进行阻塞读取,所以它再次归结为轮询 - 尽管我确定memcached非常快,我只是不喜欢连续轮询的想法.
有任何想法吗?
我在GitHub上有这个项目.在我的.travis.yml文件中,我使用与每个项目相同的配置,将代码覆盖率数据上传到Scrutinizer:
after_script:
- wget https://scrutinizer-ci.com/ocular.phar
- php ocular.phar code-coverage:upload --format=php-clover test/build/logs/clover.xml
Run Code Online (Sandbox Code Playgroud)
这是Travis最近的成功构建:
https://travis-ci.org/mindplay-dk/boxy/builds/61963347
这是最近对Scrutinizer进行的失败检查:
https://scrutinizer-ci.com/g/mindplay-dk/boxy/inspections/ac33c2fb-6083-4984-bf41-983e4d0f54e2
一旦Travis上传代码覆盖率数据,就会显示错误消息"Scrutinizer被通知测试失败".
continuous-integration unit-testing github travis-ci scrutinizer
我想将一个完整的PHP对象图序列化为JSON字符串表示,并将其反序列化为相同的PHP对象图.
以下是我考虑的选项摘要,以及它们不适合我的原因:
serialize()没有做我想要的,因为它使用特定于PHP的格式.我想要一种大多数语言广泛支持的格式,以及人类可读/可编辑的格式.
json_encode()没有做我想要的,因为它只做简单的值和数组,而不是对象.(我实际上是在我的实现中使用它,见下文.)
var_export()不处理循环引用,并且不执行我想要的操作(参见上文.)(请注意,我当前的实现也不处理循环引用 - 请参阅下面的注释和回复以澄清此问题.)
Sebastian Bergmann的Object Freezer是一个很好的实现,但它不能做我想要的 - 它使用很长的形式,并依赖于使用GUID填充序列化对象.
序列化没有做我想要的 - 它实际上不执行序列化,它解析输出serialize()并产生不同的表示,例如XML,但无法解析该表示.(它也不支持JSON - XML格式很长,并不是我想要的.)
我现在有一个工作实现分享:
https://github.com/mindplay-dk/jsonfreeze
对象图的JSON表示如下所示:
{
"#type": "Order",
"orderNo": 123,
"lines": [{
"#type": "OrderLine",
"item": "milk \"fuzz\"",
"amount": 3,
"options": null
}, {
"#type": "OrderLine",
"item": "cookies",
"amount": 7,
"options": {
"#type": "#hash",
"flavor": "chocolate",
"weight": "1\/2 lb"
}
}],
"paid": true
}
Run Code Online (Sandbox Code Playgroud)
此方法旨在用于纯树结构聚合 - 不允许循环引用,也不允许对同一对象进行多次引用.换句话说,这不是通用的,例如serialize(),unserialize()任何PHP对象图的功能.
在我最初的方法中,我使用了一个序列化的表单,它基本上是一个基础0对象列表.列表中的第一个对象(编号0)是序列化对象图的根,任何其他对象按其找到的顺序存储.
在当前实现中,JSON表示类似于可能的扩展的原始树结构,使得实际使用JavaScript中的对象图的JSON表示成为可能.唯一的偏差是magic #type属性(前缀为#以防止与属性名冲突)和 …
今天我浪费了一个小时调试一个简单的问题,其中一个名为local的变量server被初始化和配置 - 然后,在同一个文件的最后一行上,意外地重新声明它,例如通过另一个var server = ...语句,有效地创建一个新变量命名server,从而导致前一个变量超出范围; 然而,因为这些是相同类型的变量,具有相同的名称,所以其他一切继续工作,这使得调试相当困难.
是否有TypeScript或JavaScript语言功能,可以防止这种情况?
我的想法是,在同一范围内声明两个具有相同名称的变量,根本不应该被允许.
也许有一个短绒或一些质量保证工具,有能力检查和防止这种事情?(也许还有其他"坏"模式?)
嗨,我想打开一个类似于当有人单击“注册链接”时该网站打开的弹出窗口https://www.eventshigh.com/detail/Bangalore/625f39dbdb5b8e4fb5b78a073922f221-6th-save-the-queen-corporate?src=ecbox
我想将属性传递给子元素,该子元素将在弹出窗口中打开,然后将子元素中采取的操作捕获到父元素中。
有人可以告诉我我们如何做到最好。
php ×3
javascript ×2
json ×2
typescript ×2
arrays ×1
composer-php ×1
github ×1
hibernate ×1
hql ×1
jsx ×1
nhibernate ×1
postgresql ×1
push ×1
reactjs ×1
reference ×1
scrutinizer ×1
travis-ci ×1
tsvector ×1
types ×1
unit-testing ×1