小编bob*_*yer的帖子

在PHP中破坏对象的顺序是什么?

对象解构的确切顺序是什么?

从测试开始,我有一个想法:当前范围的FIFO.

class test1
{
    public function __destruct()
    {
        echo "test1\n";
    }
}

class test2
{
    public function __destruct()
    {
        echo "test2\n";
    }
}

$a = new test1();
$b = new test2();
Run Code Online (Sandbox Code Playgroud)

它会一次又一次地产生相同的结果:

test1
test2
Run Code Online (Sandbox Code Playgroud)

PHP手册是模糊的(重点煤矿突出不确定度):"为有特定对象的任何其它引用的析构函数方法将被立即调用,或者在关断期间,任何顺序 ".

解构的确切顺序是什么?任何人都可以详细描述PHP使用的销毁顺序的实现吗?而且,如果这个顺序在任何和所有PHP版本之间不一致,那么任何人都可以查明这个订单改变的PHP版本吗?

php php-internals

25
推荐指数
2
解决办法
3518
查看次数

Visual Basic:使用字符串作为名称动态创建对象

有没有办法使用字符串作为类名动态创建对象?

我已经离开VB好几年了,但是为了解决另一种语言的问题,我不得不在这个中开发一个包装器.我有一个工厂方法,可以根据其他地方的输入动态创建和返回一个类型的对象.提供的输入是从中创建对象的类名.正常语法意味着必须明确拼写整个类.要做到这一点,实际上可能有数百个if/then或者case来处理引用的libs中所有可用的类/对象选择:

If c_name = "Button" then obj = new System.Windows.Forms.Button
If c_name = "Form" then obj = new System.Windows.Forms.Form
....
Run Code Online (Sandbox Code Playgroud)

我希望将所有这些案例处理减少到一行:IE ...

my_class_name = "whateverclass"
obj = new System.Windows.Forms.my_class_name()
Run Code Online (Sandbox Code Playgroud)

在PHP中,这样处理就像......

$my_class_name = "whateverclass";
$obj = new $my_class_name();
Run Code Online (Sandbox Code Playgroud)

编辑:看看一些答案,我想我在这里已经超出了我的想法.我确实设法使用Assembly类的CreateInstance方法变体使其工作,即使我对这种变体更感兴趣,提供更多选项,包括提供构造参数......

my_type_name = "System.Windows.Forms.Button"
asmb_name = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
button1 = Reflection.Assembly.Load(asmb_name).CreateInstance(my_type_name)
Run Code Online (Sandbox Code Playgroud)

换句话说,它需要一种方法来做到这一点,而不是任何固有的语言语法? 当使用完整的汇编字符串和类路径时,此Activator变体也起作用.我怀疑CreateInstance可能没有完全的能力让我像对待它们一样对待对象,即obj = new System.Windows.Forms.Button.这就是为什么我不能简单地使用CreateObject.如果没有自然语言功能允许您将类名替换为字符串,那么是否有人能够深入了解我可以使用哪些限制CreateInstance

另外,基本的Activator.CreateInstance(在Unwrap之后)和Assembly.CreateInstance方法之间是否存在差异?

vb.net object

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

tkinter.Text:将变量绑定到窗口小部件文本内容

使用Python 3.3平台独立于此问题.

对于Entry窗口小部件,您可以将变量绑定到此窗口小部件的文本内容,如下所示(请注意构造函数中的textvariable参数Entry):

var = tkinter.StringVar()
entryField = tkinter.Entry(master, textvariable=var)
e.pack()

var.set("a new value") # entryField text now updated with this value
s = var.get() # whatever text now appears in entryField
Run Code Online (Sandbox Code Playgroud)

Text然而,对于小部件,没有这样的变量绑定功能.Text如果感兴趣的话,类定义应该可以从%python dir%/ Lib/tkinter/__ init__.py中的第2927行开始,适用于Windows版本中的Python 3.3.

如何使用Text窗口小部件最好地模拟此变量绑定功能?我的想法是将一个小部件绑定tkinter.StringVar到一个Text小部件,然后获取/设置所有文本.

更新:

我最终继承tkinter.Frame作为一个Text包装器,它接受一个textvariable期望作为tkinter.Variable实例的构造函数参数.我下面的例子中我唯一没有继承的Text原因只是因为我也想要一个滚动条,但这并不重要.

以下是我的实验代码.为了与我原来的问题以及问题如何解决(?)完全相关,重要的是self.textvariable.get = self.GetTextself.textvariable.set = self.SetText.基本上,我正在覆盖传入tkinter.Variable对象的get和set方法到我自己的设备......

class TextExtension( tkinter.Frame ): …
Run Code Online (Sandbox Code Playgroud)

python tkinter python-3.x

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

MySQL索引:它们如何工作?

我是MySQL索引的全新手.我在MySQL 5.0x上有几个MyISAM表,其中utf8字符集和排序规则各有100k +记录.主键通常是整数.每个表上的许多列可能具有重复值.

我需要快速计算,求和,平均或以其他方式对每个表中的任意数量的字段执行自定义计算,或者加入任意数量的其他字段.

我发现这个页面概述了MySQL索引的用法:http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html,但我仍然不确定我是否正确使用索引.就在我认为我已经从我想要计算的字段集合中创建完美索引时,我得到"索引必须低于1000字节"错误.

任何人都可以解释如何最有效地创建和使用索引来加速查询?

警告:在这种情况下升级Mysql是不可能的.使用Navicat Light进行数据库管理,但不需要此应用程序.

mysql indexing

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

Canvas对象标签:不是我最初给它的类型

我有一个画布,我向其中添加各种对象,例如文本对象等。我向每个画布子对象添加“标签”属性。在下面的示例中,我为绝对支持的“tag”属性添加了一个字典:

import tkinter

window = tkinter.Tk()
myCanvas = tkinter.Canvas( window, width = 400, height = 400 )
myCanvas.pack()

textItemTags = { "id": 1, "name": "test" }
textItemContents = "asdf"
textItem = myCanvas.create_text( 1, 1, tags = textItemTags, text = textItemContents )

# some method later on now tries to retrieve tag values for a selected canvas child object...
searchTags = myCanvas.gettags( textItem )

print( searchTags ) # array of strings
print( isinstance( searchTags[0], str ) ) # true..?
Run Code Online (Sandbox Code Playgroud)

问题:注意searchTags …

python tkinter

2
推荐指数
1
解决办法
1453
查看次数

标签 统计

python ×2

tkinter ×2

indexing ×1

mysql ×1

object ×1

php ×1

php-internals ×1

python-3.x ×1

vb.net ×1