我正在尝试为类的静态属性执行备份/恢复功能.我可以使用反射对象getStaticProperties()
方法获取所有静态属性及其值的列表.这得到两个private
和public static
属性及其值.
问题是我尝试使用反射对象setStaticPropertyValue($key, $value)
方法恢复属性时似乎没有得到相同的结果.private
并且protected
变量对于此方法不可见getStaticProperties()
.似乎不一致.
有没有办法使用反射类或任何其他方式设置私有/受保护的静态属性?
受审
class Foo {
static public $test1 = 1;
static protected $test2 = 2;
public function test () {
echo self::$test1 . '<br>';
echo self::$test2 . '<br><br>';
}
public function change () {
self::$test1 = 3;
self::$test2 = 4;
}
}
$test = new foo();
$test->test();
// Backup
$test2 = new ReflectionObject($test);
$backup = $test2->getStaticProperties();
$test->change();
// Restore
foreach ($backup as …
Run Code Online (Sandbox Code Playgroud) 我在这里有一些标记:
<label>Username:</label>
<div class="input small"><div class="left"></div><div class="right"></div><div class="center">
<input name="username" type="text" />
</div></div>
<label>Password:</label>
<div class="input small"><div class="left"></div><div class="right"></div><div class="center">
<input name="password" type="password" />
</div></div>
Run Code Online (Sandbox Code Playgroud)
和CSS:
label {
padding-top: 5px;
}
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我的两个标签元素上的填充不起作用.在IE和Firefox中尝试过,在任何一种情况下它都无法正常工作.Firebug说填充物在那里,但它没有做任何事情.尝试将填充设置为50px,但仍然没有.
有任何想法吗?
投票前请仔细阅读本...
所以我看到很多会话管理类通过串联用户代理和几个ip块或其他来创建指纹.他们似乎还添加了一个盐,然后在将指纹存储在会话变量中之前对其进行哈希处理.
这种指纹生成通常发生在每个请求中,以便验证会话的当前用户是否与原始会话用户相关.这就是为什么我想知道,盐和散列真的是必要的吗?
如果黑客可以访问您的文件系统以查看您的会话文件内容,那么您是否已经在这个时候已经进行了管理?
任何信息非常感谢.
使用PDO建立与数据库的连接时,是否应每次使用PDO属性PDO :: ATTR_PERSISTENT?它表示这会为该用户创建一个持久连接,并且每次请求数据库连接时都会获取相同的连接而不是重新建立新连接.为什么这不是默认值?有没有理由不使用它?
我试图访问静态方法,但使用变量作为类名.这可能吗?我似乎遇到了问题.我希望能够做到这样的事情:
class foo {
public static function bar() {
echo 'test';
}
}
$variable_class_name = 'foo';
$variable_class_name::bar();
Run Code Online (Sandbox Code Playgroud)
我希望能够使用静态变量做类似的事情.
我有一个带有以下输入标记的HTML页面:
...
<input type="file" id="browseContactImageButton" />
...
Run Code Online (Sandbox Code Playgroud)
单击页面上的按钮将导致打开文件对话框.如果我想进行实际上传,我需要另一个按钮来单击(提交),因为此输入文件按钮仅用于提供文件的路径.
是否可以单击浏览按钮,选择文件并在选择文件后立即启动上传功能?如果是,是否有人可以提供代码段?谢谢.
我想在我的单元测试框架中使用PHP的断言函数.它的优点是能够在错误消息中看到正在评估的表达式(包括注释).
问题是每个包含测试的方法可能有多个assert语句,我想跟踪已经运行了多少实际断言语句.assert没有给我一个方法来计算它运行了多少次,只计算它失败了多少次(在故障回调中).
我试图将assert语句抽象为一个函数,以便我可以添加一个计数机制.
private function assertTrue($expression) {
$this->testCount++;
assert($expression);
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为表达式中的任何变量现在都超出了范围.
$var = true;
$this->assertTrue('$var == true'); // fails
Run Code Online (Sandbox Code Playgroud)
关于如何在我的单元测试中使用断言同时能够计算实际测试数量的任何建议?
我提出的两个想法是让用户自己计算
$this->testCount++;
assert('$foo');
$this->testCount++;
assert('$bar');
Run Code Online (Sandbox Code Playgroud)
或者让用户在每个测试方法中只放置一个断言(然后我可以计算运行的方法的数量).但这些解决方案都不是非常可执行的,并且使编码更加困难.有关如何实现这一目标的任何想法?或者我应该从我的测试框架中剥离assert()?
您可能知道,静态属性会使测试变得困难.有没有办法将特定类的所有静态属性重置回其初始状态?理想情况下,这不需要每个类的自定义代码,但可以通过继承或完全从类外部以一般方式使用.
请不要回复"不要使用静态属性"之类的内容.谢谢.
我最近看到一个包含的XML字符串<?var type="string" ?>
.我想知道是否有人知道这意味着什么?它与我想象的PHP有关.这是一个上下文片段.
<?xml version="1.0" encoding="UTF-8"?>
<node>
<?var type="string" ?>
<somenode>Value</somenode>
</node>
Run Code Online (Sandbox Code Playgroud)
我似乎无法搜索谷歌,<?var
所以也许你们可以帮助我.
我正在尝试使用PDO的lastInsertId方法,但文档声明对于某些rdbms我需要一个序列名作为参数.只熟悉mysql,我不太确定序列名是什么.它们是指包含自动增量ID的列的名称吗?以下是该方法的文档:
http://php.net/manual/en/pdo.lastinsertid.php
任何有关这方面的信息将不胜感激.谢谢.
php ×7
html ×2
pdo ×2
static ×2
ajax ×1
assert ×1
css ×1
file-upload ×1
fingerprint ×1
javascript ×1
lastinsertid ×1
methods ×1
padding ×1
phpunit ×1
reflection ×1
security ×1
session ×1
unit-testing ×1
variables ×1
visibility ×1
xml ×1