我正在使用PHP 5.2.6.我希望方法中的参数有一个默认值,但似乎我有点太聪明了.
class属性blnOverwrite是默认的,可以在类的其他地方设置.我有一个方法,我想让它再次设置,但不能覆盖现有的值.我尝试这个时收到错误:
public function place( $path, $overwrite = $this->blnOverwrite ) { ... }
Run Code Online (Sandbox Code Playgroud)
我必须这样做吗?
public function place( $path, $overwrite = NULL ) {
if ( ! is_null($overwrite) ) {
$this->blnOverwrite = $overwrite;
}
...
}
Run Code Online (Sandbox Code Playgroud) 是否有一个函数来确保任何给定的数组符合特定的结构?我的意思是具有特定的键名,可能是值的特定类型,以及任何嵌套结构.
现在我有一个地方,我想确保过去的数组有某些键,一对持有某种数据类型,一个子数组有特定的键名.我已经完成了很多乱跑,因为我将错误的数组传递给它,最后我就到了我有一堆
if ( ! isset($arr['key1']) ) { .... }
if ( ! isset($arr['key2']) ) { .... }
if ( ! isset($arr['key3']) ) { .... }
Run Code Online (Sandbox Code Playgroud)
如果我能事先检查一下阵列是否符合特定结构,我本可以节省大量时间和惊愕.理想情况下
$arrModel = array(
'key1' => NULL ,
'key2' => int ,
'key3' => array(
'key1' => NULL ,
'key2' => NULL ,
),
);
if ( ! validate_array( $arrModel, $arrCandidate ) ) { ... }
Run Code Online (Sandbox Code Playgroud)
所以,我问的问题是,这已经存在,还是我自己写的?
我有一个关于php的'基础'问题.在示例代码中fgets,它将此代码段作为读取文件内容的示例:
while (($buffer = fgets($handle, 4096)) !== false) {
echo $buffer;
}
Run Code Online (Sandbox Code Playgroud)
声明($buffer = fgets($handle, 4096))如何具有价值?这是一种作业+评价$buffer吗?我的意思是,它如何获得它的价值?这有名字吗?我注意到它使用了严格的比较,所以所有赋值都评估为布尔值true或false?
如果我想编写一个可以这样对待的函数,除了在某些条件下返回false之外,我是否必须做一些特殊的事情?
实例化对象时,为什么要指定该类两次?
OddEven number = new OddEven();
Run Code Online (Sandbox Code Playgroud)
你为什么不能说出来number = new OddEven();?当我声明一个字符串时,我只说String一次:
String str = "abc";
Run Code Online (Sandbox Code Playgroud)
实际上,我的问题不是"为什么你这样做" - 显然,你这样做是因为你必须 - 但是,为什么创作者选择让Java语法像这样工作呢?
我的想法是:
对加密数据的暴力攻击如何知道何时找到解密数据的正确密钥?有没有办法知道数据已被解密,除了让人看到它?如果它不是人类友好的数据怎么办?
我正在寻找单元测试或OOP原则方面的"特殊"定义.在谈到异常抛掷时,有几次SO,我看到过这样的评论,"好吧,我不会考虑让Bar从Foo变得特别." (有一个trollface图释?)
我做了一些谷歌搜索,并没有立即回答.是否有任何比观点或偏好更客观的定义,经验法则或指导方针?如果一个人说"这是例外"而另一个人说"不,不是",那么如何解决这一争议呢?
编辑:哇,所以已经有很多答案,评论不同意,而且他们似乎都是回答者的意见:P没有人引用维基百科页面或文章来自灰熊的片段.在"元回答"我是从这个考虑是有是没有商定何时使用异常的经验法则.在选择抛出异常时,我更自信地运用自己的,个人的,特殊的规则.
有没有办法在PHP中创建对象的只读属性?我有一个带有几个数组的对象.我想像通常的数组一样访问它们
echo $objObject->arrArray[0];
Run Code Online (Sandbox Code Playgroud)
但我不希望能够在构造之后写入这些数组.感觉就像构建一个局部变量的PITA:
$arrArray = $objObject->getArray1();
echo $arrArray[0];
Run Code Online (Sandbox Code Playgroud)
无论如何,虽然它将数组保持在对象原始状态,但它并不妨碍我重写本地数组变量.
我有一个页面,我想接受GET参数中的电子邮件地址.如果我使用FILTER_VALIDATE_EMAIL,我仍然容易受到xss和javascript注入攻击,等等?
我不是在问这是一个好的,还是足够好的电子邮件地址验证器.我想知道是否仍然可以通过它传递的任意字符串注入错误的Web代码 - 我是否需要进行额外的过滤以防止这种情况发生?
我在查询工作时遇到问题,我认为应该可行.它在形式中
SELECT DISTINCT a, b, c FROM t1 WHERE NOT IN ( SELECT DISTINCT a,b,c FROM t2 ) AS alias
Run Code Online (Sandbox Code Playgroud)
但MySQL的扼流圈,其中"IN("启动.请问mysql支持这样的语法吗?如果没有,我怎么能去获得这些结果?我想找到一个不同的元组(A,B,C)在表1中不存在在表2中.
变量看起来很酷,但我想不出一个人会在生产环境中实际使用它们的情况.这种情况会是什么样的?它们是如何使用的?
php ×6
oop ×2
arrays ×1
brute-force ×1
default ×1
encryption ×1
evaluation ×1
exception ×1
java ×1
mysql ×1
readonly ×1
security ×1
syntax ×1
types ×1
validation ×1