标签: instance

为什么我不能将PHP类实例存储为SESSION变量

我有一个PHP脚本,从Dojo Ajax xhrGet调用中以两种方式调用.第一次使用"init"参数调用它会导致脚本创建StateList类的实例并读入状态名称的文件.

session_start();
@include('StateList.php');
require_once('phplog.php');

//start executing here
$comd=$_GET['nexturl'];
if($comd=="init") {
$st = new StateList("../data/statestxt.txt");
$_SESSION['statefile'] = $st;
}
Run Code Online (Sandbox Code Playgroud)

第二次和更多次,另一个xhrGet调用传递一个"getstate"参数,下面的代码尝试从SESSION数组中获取StateList类的实例.

if($comd =="getstate") {
$st= $_SESSION['statefile'];
phplog("size=".$st->getSize());
Run Code Online (Sandbox Code Playgroud)

}

但是,getSize()方法永远不会执行,也不能在重构的StateList类实例上调用任何其他方法.

请注意,这是一个PHP脚本,它在顶部包含类定义,因此类方法应该是已知的和可用的.

我在这里错过了什么?

php variables session class instance

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

关于制作通用实用类静态的意见

昨天和今天我一直在阅读的一些内容:

  • (SO)你应该避免静态课吗?
  • (SO)何时在C#中使用静态类 - Mark S. Rasmussen 在这里做了一个很好的评论
  • Singleton vs Static - 来自这里的好评:
    这些差异非常微妙,但它们确实会影响系统在经过多年微妙变化,新功能,增强功能等后的弹性.大多数开发人员不喜欢系统维护,我觉得最大的原因是因为系统并非真正设计为保持.通过结合上面的"单例"模式,我抽象了对象的创建和打字,远离我的核心业务逻辑,这对于长期维护至关重要.
  • Singleton被认为是愚蠢的
  • (SO)单一方法的类 - 最好的方法? - 再一次,Mark S. Rasmussen的一句话:
    要求消费者无缘无故地创建一个类实例; 对静态方法没有任何风险的真实实用程序类是静态方法的优秀案例 - 以System.Convert为例.如果您的项目是一次性的,对未来的维护没有要求,那么整体架构确实不是很重要 - 静态或非静态,并不重要 - 然而,开发速度确实如此.
  • (SO)制作方法所有类中的静态 - 速度现在对我来说不是问题,当来自网站的多个客户端和(可能但不太可能)来自管理应用程序的多个客户端调用时,代码必须正常*正常工作*.

我们(我)正忙着重写我们的主要应用程序,解决方案中的一个项目是"Common",它包含一个类"clsCommon".这个类没有属性,一个私有方法被称为构造函数中的唯一行,然后只是公共方法.

这个类处理的事情(不是真正的方法名称或签名):

  • 复制文件:
    • 拷贝文件
    • DecryptAndCopyFile
  • XML设置文件:
    • GetSpecificXMLValue(查询XML设置文件中的值)
    • SetSpecificXMLValue
    • DeleteSpecificXMLValue
  • 创建目录
  • 将时间戳记作为字符串(`return DateTime.Now.ToString("yyyyMMddHHmmss");`)
  • 传递参数的各种字符串函数
  • 写出日志文件.
  • 检查传递的字符串参数(如果它只包含白名单中的元素)(白名单是`readonly`私有列表,在构造函数中赋值.)

目前,解决方案中的所有其他项目都引用了该项目,并通过以下方式提供对该类的访问:

namespace Us.OtherProjects
{
   public class clsCommon : Us.Common.clsCommon
   {}
}

namespace Us.OtherProjects
{
   public static class clsMain
   {
         public static clsCommon CommonClsClassReferenceForGlobalUsage = new clsCommon();
         . …
Run Code Online (Sandbox Code Playgroud)

.net c# static class instance

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

Amazon EC2实例ID - 为何选择XOR?

根据Guy Rosen和RightScale的说法,Amazon EC2实例ID包含针对"内部ID"的第一个和第二个半部的两个XOR,并且所有三个都针对它们自己的常量.

我知道我们不知道为什么亚马逊会这样做.但是,从一般的角度来看,是否有人实施或看到过这种异或,为什么要实施这种异或?

是帮助模糊ID的唯一目的吗?

obfuscation instance xor amazon-ec2

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

Python类表示的方法

我知道有方法__repr__和__str__存在来给出类实例的正式和非正式表示.但是对于类对象是否也存在等价物,因此当打印类对象时,可以显示它的一个很好的表示?

>>> class Foo:
...     def __str__(self):
...         return "instance of class Foo"
...
>>> foo = Foo()
>>> print foo
instance of class Foo
>>> print Foo
__main__.Foo
Run Code Online (Sandbox Code Playgroud)

python class instance representation

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

不同类型的类变量之间有什么区别?

首先,有A两个类变量和两个实例变量的类:

In [1]: def fun(x, y): return x + y

In [2]: class A:
   ...:     cvar = 1
   ...:     cfun = fun
   ...:     def __init__(self):
   ...:         self.ivar = 100
   ...:         self.ifun = fun
Run Code Online (Sandbox Code Playgroud)

我们可以看到int类的类变量和实例变量都可以正常工作:

In [3]: a = A()

In [4]: a.ivar, a.cvar
Out[4]: (100, 1)
Run Code Online (Sandbox Code Playgroud)

但是,如果检查函数类型变量,情况就会改变:

In [5]: a.ifun, a.cfun
Out[5]: 
(<function __main__.fun>,
 <bound method A.fun of <__main__.A instance at 0x25f90e0>>)

In [6]: a.ifun(1,2)
Out[6]: 3

In [7]: a.cfun(1,2)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/home/future/<ipython-input-7-39aa8db2389e> …
Run Code Online (Sandbox Code Playgroud)

python variables class instance

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

为什么从类实例返回的字符串保持NoneType类型,即使IDLE表示它是一个字符串?

我正在使用一个返回字符串的类实例.

我正在调用此实例两次并将返回的值收集到列表中.然后我尝试使用.sort()来对这两个字符串进行排序.但是,当我这样做时,它会抛出一个错误,说明类型是(Nonetype - 将其视为对象).

我确实检查了类型(列表的元素),并返回了类型"string".我不知道发生了什么.基本上在空闲时它表示我在列表中有字符串..但是在运行它时会抛出一个错误,说NoneType(这些字符串的列表)不可迭代.

这是一个例子:

list_of_strings = [class_method(args), class_method(another_args)] ## this instance returns string

print type(list_of_strings[0])  #prints type 'str'
Run Code Online (Sandbox Code Playgroud)

错误:

list_sorted = list(list_of_strings.sort())
TypeError: 'NoneType' object is not iterable
Run Code Online (Sandbox Code Playgroud)

非常感谢!

乔治

python string instance nonetype

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

CodeMirror删除编辑器实例

我正在使用CodeMirror在我的网站上进行一些语法高亮显示.我在我的html中创建了两个单选按钮.我的JavaScript代码如下:

if(flag == "C")
    Editor = CodeMirror.fromTextArea(textArea, {
    lineNumbers: true,
    matchBrackets: true,
    mode: "text/x-csrc"
});
else if(flag == "Cpp")
    Editor.off(0);
    Editor = CodeMirror.fromTextArea(textArea, {
    lineNumbers: true,
    matchBrackets: true,
    mode: "text/x-c++src"
});
Run Code Online (Sandbox Code Playgroud)

它确实完成了语法高亮的功能,但问题是当我多次单击单选按钮时,它只创建了我点击的数量,这很烦人.所以我想知道在创建新的编辑器实例之前有没有办法删除以前的编辑器实例?

javascript editor instance codemirror

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

设计模式-数据到对象

假设我在文件或数据库中有一些数据。它可以是JSON,XML,YAML,CSV,String []等。

我想用这些数据创建一个模型对象。例如:

数据:

{
    "name": "John Doe",
    "age": "30"
}
Run Code Online (Sandbox Code Playgroud)

型号(伪代码):

class Person {
    Person(name, age) {
        this.name = name;
        this.age = age;
    }
    // business logic
}
Run Code Online (Sandbox Code Playgroud)

一些从JSON数据(伪代码)创建Person对象的代码:

peopleArray = [];
recordSet = aJSONReader.read('file');
for (recordSet as r) {
    peopleArray.add(new Person(r[0], r[1]));
}
Run Code Online (Sandbox Code Playgroud)

您将使用什么根据给定的数据构建模型对象?在我的示例中,我将开始支持JSON。如果我想更改它或支持新的数据格式怎么办?如何解耦此代码?哪种设计模式适合这里?

java json design-patterns instance

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

GCE:从磁盘快照创建实例模板

可能吗?官方手册包括:

确定性实例模板

但没有更多信息,我该怎么做。也许有人已经这样做了?提前Tnx。

templates snapshot instance google-compute-engine

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

Haskell没有使用类型类的更具体的实例

过去几天我一直在努力弄清楚我正在尝试做的事情在Haskell中是否真的可行.

下面是一些上下文:我正在尝试编写一种小标记语言(类似于ReST),其中语法已经通过指令启用了自定义扩展.对于用户实现新指令,他们应该能够在document数据类型中添加新的语义结构.例如,如果想要添加用于显示数学的指令,他们可能希望MathBlock String在ast内部有一个构造函数.

显然,数据类型是不可扩展的,并且存在DirectiveBlock String包含指令名称的通用构造函数(此处"math")的解决方案是不合需要的,因为我们希望在我们的只有格式良好的构造中具有(因此只有具有良好格式的指令)参数).

使用类型系列,我原型如下:

{-# LANGUAGE ExistentialQuantification #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeSynonymInstances #-}
{-# LANGUAGE FlexibleInstances #-}

-- Arguments for custom directives.
data family Args :: * -> *

data DocumentBlock
    = Paragraph String
    | forall a. Block (Args a)
Run Code Online (Sandbox Code Playgroud)

果然,如果有人希望为数学显示定义一个新指令,他们可以这样做:

data Math
-- The expected arguments for the math directive.
data instance Args Math = MathArgs String

doc :: [DocumentBlock]
doc = …
Run Code Online (Sandbox Code Playgroud)

extensibility haskell instance typeclass

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