标签: instance

如何在变量类上调用静态方法?

我正在尝试创建一种从给定变量加载和实例化类的函数.像这样的东西:

<?php
function loadClass($class) {
  $sClassPath = SYSPATH."/classes/{$class}.php";
  if (file_exists($sClassPath)) {
    require_once($sClassPath);
    $class = $class::getInstance();
  }
}
?>
Run Code Online (Sandbox Code Playgroud)

如果我像这样使用它:

<?php
  loadClass('session');
?>
Run Code Online (Sandbox Code Playgroud)

它应该包括并实例化会话类.

BTW:静态getInstance函数来自以下代码:

<?php
  function getCallingClass() {
    $backtrace = debug_backtrace();
    $method    = $backtrace[1]['function'];
    $file      = file($backtrace[1]['file']);
    $line      = $file[($backtrace[1]['line'] - 1)];
    $class     = trim(preg_replace("/^.+?([A-Za-z0-9_]*)::{$method}\(.*$/s", "\\1\\2", $line));

    if(! class_exists($class)) {
      return false;
    } return $class;
  }

  class Core {

    protected static $instances = array();

    public static function getInstance() {
      $class = getCallingClass();

      if (!isset(self::$instances[$class])) {
        self::$instances[$class] = new $class();
      } …
Run Code Online (Sandbox Code Playgroud)

php oop class function instance

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

WPF仅强制执行一个应用程序实例

如何只允许一个WPF应用程序实例运行?

谢谢.

wpf runtime instance

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

如何从Unity映射中删除(取消注册)已注册的实例?

我遇到了一个我现在无法解决的问题.我有以下内容:

UnityHelper.DefaultContainer.RegisterInstance(typeof(IMyInterface), "test", instance);
Run Code Online (Sandbox Code Playgroud)

UnityHelper.DefaultContainer我的助手在哪里获得带有加载配置的统一容器.

在这里我注册instance为一个实例IMyInterface.

所以在任何地方(使用后一段时间)我想删除此映射.完全删除它.我怎么能这样做?

我试过了:

UnityHelper.DefaultContainer.Teardown(instance)
Run Code Online (Sandbox Code Playgroud)

但是不成功,以下代码仍会返回instance:

UnityHelper.DefaultContainer.ResolveAll<IMyInterface>()
Run Code Online (Sandbox Code Playgroud)

c# instance ioc-container unity-container registering

34
推荐指数
4
解决办法
3万
查看次数

C#获取属性值而不创建实例?

是否有可能在不创建实例的情况下获得价值?

我有这门课:

public class MyClass
{
    public string Name{ get{ return "David"; } }

    public MyClass()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我需要获取值"David",而不创建MyClass的实例.

c# properties instance

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

__init__和Python中的参数

我想理解__init__Python中构造函数的参数.

class Num:
    def __init__(self,num):
        self.n = num
    def getn(self):
        return self.n
    def getone():
        return 1
myObj = Num(3)

print myObj.getn()
Run Code Online (Sandbox Code Playgroud)

结果:3

我称之为getone()方法:

print myObj.getone()
Run Code Online (Sandbox Code Playgroud)

结果:错误'getone()'不带参数(1given).

所以我更换:

def getone():
    return 1
Run Code Online (Sandbox Code Playgroud)

def getone(self):
    return 1
Run Code Online (Sandbox Code Playgroud)

结果:1这没关系.

getone()方法不需要参数.

我是否必须使用毫无意义的论点?

python oop class instance

33
推荐指数
2
解决办法
9万
查看次数

使用静态方法与实例化包含方法的类的性能

我正在用C#开发一个项目.以前的程序员不知道面向对象的编程,所以大多数代码都是在大量的文件中(我们说的是4-5000行),分布在几十个,有时几百个方法上,但只有一个类.重构这样一个项目是一项艰巨的任务,所以我现在已经半熟悉了.

只要在其中一个代码文件中使用方法,就会实例化该类,然后在对象实例上调用该方法.

我想知道这样做是否有明显的性能损失?我应该"暂时"使所有方法保持静态,最重要的是,应用程序是否会以任何方式从中受益?

oop methods performance static instance

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

如何判断我的程序的另一个实例是否已在运行?

如何判断我的程序的一个实例是否正在运行?我以为我可以用数据文件做这个但它只是凌乱:(

我想这样做,因为我只希望一个实例在一个点上打开.

delphi persistence mutex semaphore instance

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

有一个不使用实例变量的非静态方法是否有意义?

编译器不允许静态方法调用非静态方法.我理解这样做是因为非静态方法通常最终使用实例变量.

但是有一个不使用实例变量的非静态方法是否有意义.如果我们的行为不影响或不受实例状态的影响,则不应将此类方法标记为静态.

java methods static instance non-static

29
推荐指数
4
解决办法
2246
查看次数

为什么C#编译器在使用LINQ方法时会创建私有DisplayClass Any()以及如何避免它?

我有这个代码(整个代码并不重要,但可以在这个链接上看到):

internal static class PlayCardActionValidator
{
    public static bool CanPlayCard(...)
    {
        // ...
        var hasBigger =
            playerCards.Any(
                c => c.Suit == otherPlayerCard.Suit
                     && c.GetValue() > otherPlayerCard.GetValue());
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

在反编译器(ILSpy)中打开代码后,我注意到<>c__DisplayClass0_0C#编译器存在新创建的类:

在此输入图像描述

如果此代码对系统性能不重要,这对我来说不是问题.此方法被调用数百万次,垃圾收集器正在清理这些<>c__DisplayClass0_0实例,这会降低性能:

在此输入图像描述

在使用该Any方法时,如何避免创建此类(他的实例和垃圾收集)?

为什么C#编译器会创建这个类,有没有Any()我可以使用的替代方法?

c# linq performance instance any

29
推荐指数
2
解决办法
3085
查看次数

自动启动多个upstart实例

我们使用PHP gearman worker并行运行各种任务.一切都运行得很好,我有愚蠢的小shell脚本,当我想要它们时将它们旋转起来.作为一名程序员(因此也是懒惰的),我想看看我是否可以通过一个新手脚本来解决这些问题.

我想出了如何使用实例节,所以我可以使用实例编号启动它们:

description "Async insert workers"
author      "Mike Grunder"

env SCRIPT_PATH="/path/to/my/script"

instance $N

script
    php $SCRIPT_PATH/worker.php
end script
Run Code Online (Sandbox Code Playgroud)

这很好用,就像这样开始它们:

sudo start async-worker N=1
sudo start async-worker N=2
Run Code Online (Sandbox Code Playgroud)

我想要使​​用这些工作者的方法是调整其中的一些(可能每个核心一个等),我想在启动时这样做.要清楚,我不需要upstart脚本来检测核心数量.我很高兴只说"做8个实例",但这就是我想要多次运行的原因.有没有办法让我在upstart脚本中使用"start on"子句自动执行此操作?

例如,启动实例1,2,3,4?然后让它们在关机时正常退出?

我想我可以将它挂钩到init.d脚本中,但我想知道upstart是否可以处理这样的事情,或者是否有人已经弄清楚了这个问题.

干杯啦!

upstart instance worker gearman

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