在PHP中,我可以指定具有字段的接口,还是PHP接口仅限于函数?
<?php
interface IFoo
{
public $field;
public function DoSomething();
public function DoSomethingElse();
}
?>
Run Code Online (Sandbox Code Playgroud)
如果没有,我意识到我可以在接口中公开一个getter作为函数:
public GetField();
Run Code Online (Sandbox Code Playgroud) 我有几个类,我希望用特定的属性标记.我有两种方法.一个涉及使用属性扩展类.另一个使用空接口:
属性
public class FoodAttribute : Attribute { }
[Food]
public class Pizza { /* ... */ }
[Food]
public class Pancake { /* ... */ }
if (obj.IsDefined(typeof(FoodAttribute), false)) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
接口
public interface IFoodTag { }
public class Pizza : IFoodTag { /* ... */ }
public class Pancake : IFoodTag { /* ... */ }
if (obj is IFoodTag) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
由于使用了Reflection,我对使用这些属性犹豫不决.然而,与此同时,我对创建一个仅用作标记的空接口犹豫不决.我对它们进行了压力测试,两者之间的时间差仅为3毫秒左右,因此这里的性能并未受到影响.
在GitHub API中,我可以发出GET请求
https://api.github.com/repos/owner/repo/git/trees/master?recursive=1
以递归方式获取存储库的所有树.除了给我所有目录,它还提供了我可用于下载单个文件的URL:
[...]
{
"mode": "100644",
"type": "blob",
"sha": "abc1234",
"path": "path/to/file.txt",
"size": 104361,
"url": "https://api.github.com/repos/owner/repo/git/blobs/abc1234"
},
[...]
Run Code Online (Sandbox Code Playgroud)
虽然recursive=1这篇文章阻止我不得不对存储库中的每个目录发出新的GET请求,但我仍然需要为每个文件单独调用.我查看了GitHub API文档,但他们没有提供这样做的方法.很可能根本没有办法在单个请求中获取所有文件和文件夹,但我想在这里要求验证我没有其他选择.
许多jQuery(和jQuery UI)功能允许在显示/隐藏元素时发生动画.关于其他完全网站的令人厌烦的事情之一是他们缺乏对你可以使用的动画关键字的定义.我所知道的slide,fadeIn和fadeOut.我知道我过去也使用过其他人.某处有明确的选项列表吗?
由于远程上的某些分支,我似乎遇到了存储库不断在本地重新创建分支的问题。我在 Windows 机器上,所以我怀疑这是一个区分大小写的问题。
这是一个示例夫妇命令:
$ git pull
From https://github.com/{my-repo}
* [new branch] Abc -> origin/Abc
* [new branch] Def -> origin/Def
Already up to date.
$ git pull -p
From https://github.com/{my-repo}
- [deleted] (none) -> origin/abc
- [deleted] (none) -> origin/def
* [new branch] Abc -> origin/Abc
* [new branch] Def -> origin/Def
Already up to date.
Run Code Online (Sandbox Code Playgroud)
执行 a 时git pull,有问题的分支大写。当我做一个git pull -p(修剪)时,它首先尝试删除分支的小写版本,然后创建大写版本。
远程分支大写 (origin/Abc和origin/Def)。
我试图临时更改我的 Git 配置ignorecase=false(当前为ignorecase=true)。但我注意到行为没有变化。我猜我的一端有一些本地的东西目前正固定在那些小写的分支上。但 …
到目前为止,我尝试过以下方法:
public class Widget
{
public int Id;
public string Name;
}
public static class Main
{
public static void Main()
{
// Initialize store and preload with widgets...
using (var session = store.OpenSession())
{
var widgets = session.Load<Widget>();
foreach(var widget in widgets)
{
Console.WriteLine(widget.Name);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我已经能够通过添加索引然后使用该索引作为查询来加载所有:
var store = new DocumentStore();
store.DatabaseCommands.PutIndex("AllWidgets", new IndexDefinition<Widget>
{
Map = widget => from widget in widgets
select new { widget }
});
// Back in Main
var widgets = …Run Code Online (Sandbox Code Playgroud) 有没有办法指定泛型类型是一种类型还是另一种类型?
public class SoftDrink<T>
where T : TypeOne or TypeTwo
{ }
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一种XElement以强类型方式获取值的泛型方法.这就是我所拥有的:
public static class XElementExtensions
{
public static XElement GetElement(this XElement xElement, string elementName)
{
// Calls xElement.Element(elementName) and returns that xElement (with some validation).
}
public static TElementType GetElementValue<TElementType>(this XElement xElement, string elementName)
{
XElement element = GetElement(xElement, elementName);
try
{
return (TElementType)((object) element.Value); // First attempt.
}
catch (InvalidCastException originalException)
{
string exceptionMessage = string.Format("Cannot cast element value '{0}' to type '{1}'.", element.Value,
typeof(TElementType).Name);
throw new InvalidCastException(exceptionMessage, originalException);
}
}
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到First attempt的那样GetElementValue …
我有一个简单的正则表达式来检查用户名:
preg_match('/(*UTF8)^[[:alnum:]]([[:alnum:]]|[ _.-])+$/i', $username);
Run Code Online (Sandbox Code Playgroud)
在本地测试(使用WAMP的Windows 7)中,这将允许使用UTF字符的用户名(例如é或ñ).但是,当我在实际托管该站点的服务器上进行测试时,我收到以下警告:
警告:preg_match()[function.preg-match]:编译失败:(*VERB)在第12行/home/sites/vgmusic.com/test/Core/Impl/FormElementValidator.php中的偏移量5处无法识别
我也在本地Ubuntu安装上试过这个并得到同样的错误.事实上,我只在我的本地开发环境中看到过这项工作.有没有办法允许适用于所有操作系统的特殊字符?
我正在编写的Windows Phone 7应用程序的一个要求是处理应用程序进入待机状态并在某些事情中断时(如电话).这被称为"墓碑"应用程序.有没有办法在模拟器上模拟这种行为?除非我们能够做到这一点或获得一部真正的手机(后者难度很小),否则测试将相当困难.