为什么在PHP中你可以通过某个类的实例访问静态方法,但不仅仅是通过类型名称?
更新:我是.net开发人员,但我也与PHP开发人员合作.最近我发现了关于从实例调用的静态方法的这一刻,并且无法理解为什么它可以是有用的.
例:
class Foo
{
public static Bar()
{
}
}
Run Code Online (Sandbox Code Playgroud)
我们可以接受这样的方法:
var $foo = new Foo();
$foo.Bar(); // ??????
Run Code Online (Sandbox Code Playgroud) 我有一个iframe:
我找到了一个解决方法:
Response.AddHeader("Pragma", "no-cache");
Response.AddHeader("Cache-Control", "no-cache");
Run Code Online (Sandbox Code Playgroud)
但它没有帮助.mb任何人都知道什么可以解决这个问题?
我有这样一堂课:
public static class CacheManager
{
static object lockObject = new object();
static MemcachedClient CacheObject
{
get
{
if (!MemcachedClient.Exists(Settings.Default
.CacheInstanceName))
{
MemcachedClient.Setup(Settings.Default
.CacheInstanceName,
new string[] {Settings.Default
.CacheHostAddress});
}
//
//
return MemcachedClient.GetInstance(Settings
.Default.CacheInstanceName);
}
}
public static List<TData> Get<TData>(string key, Func<List<int>> getListCallback,
Func<int, TData> getItemCallback) where TData : class
{
var result = new List<TData>();
//
//
var list = CacheObject.Get(key);
if (list == null)
{
lock (lockObject)
{
list = CacheObject.Get(key);
if (list == null)
{
list = …Run Code Online (Sandbox Code Playgroud) 我的问题可能是新手或重复,但我想知道当几个线程同时尝试读取静态变量时会发生什么.我现在对同步并不感兴趣,我只是想知道他们是立即还是轮流阅读?
更新:我的问题更多的是物理领域或类似的那样(=如果它是线程读取变量的同一时刻.
最近我决定使用视图模型而不是 EF EntityObjects。我确信 GET 请求不会有问题,但我想知道如何处理创建和更新操作。我已经阅读了很多讨论并决定我会以这种方式行事。但出现了另一个问题:
1) 当我使用带有注释的 EF EntityObjects 时,验证逻辑存储在一个地方,但是如果我在不同的项目中有不同的视图模型,那么我将不得不复制验证规则。这不是违反了 DRY 原则吗?
2)我已经阅读了几篇关于视图模型和验证的帖子,其中人们建议验证视图模型中的输入和域模型中的业务规则,但我无法意识到如果我的操作将视图模型作为参数,我如何调用域模型中定义的验证:
public class MyDomainModel : IValidatableObject
{
public string Title;
// validation of business rules
}
public class MyViewModel
{
[Required]
public string Title;
}
public ActionResult Edit(MyViewModel item)
{
if (ModelState.IsValid) // MyViewModel's rules are validated not MyDomainModel's
{
...
}
Run Code Online (Sandbox Code Playgroud)