请考虑以下代码:
class foo {
static $bar = 'baz';
}
var_dump('foo'::$bar);
Run Code Online (Sandbox Code Playgroud)
它在PHP5中抛出一个错误(如预期的那样):
解析错误:语法错误,第4行[...]中的意外'::'(T_PAAMAYIM_NEKUDOTAYIM)
但它在PHP7和输出中没有问题:
string(3) "baz"
Run Code Online (Sandbox Code Playgroud)
这是故意还是错误?
我刚刚开始学习PHP,并结束了我的第一个PHP和MySQL for dummies book我担心我的PHP应用程序和MySQL数据库之间的安全连接.
根据我的了解,一种方法是使用数据库凭据创建.php文件,例如:
--- database.php ---
<?php
define('HOST', 'localhost');
define('DB_USR' , 'mysql_username');
define('DB_PSWD' , 'mysql_password');
define('DB_NAME' , 'mysql_newbie');
?>
Run Code Online (Sandbox Code Playgroud)
然后require_once('database.php')
在每个需要任何类型的数据库查询的PHP页面中放置一个.
我担心这种方法是否安全.一旦将文件放在网络服务器上,是不是每个人都可以访问文件database.php?
任何人都可能阅读数据库的凭据并乱搞它的方式吗?
有什么想法吗?
我正在尝试将组合框应用到一个小的GTK3接口,但我无法弄清楚如何填充它的列表,以及如何将接口的组合框与我的python代码连接起来.
有人能告诉我一个小例子吗?其余部分我将能够完成.
虽然Java中的所有类都是Object类的子类,但与其他对象类型不同,但是如果没有强制转换,则不能将Object类型的引用变量分配给任何其他引用类型.
例如:
public class Inheritance {
public static class Animal {
public void Scream() {
System.out.println("I'm an animal");
}
}
public static class Mammal extends Animal{
public void Scream(){
System.out.println("I'm a mammal");
}
}
public static class Tiger extends Mammal{
public void Scream(){
System.out.println("I'm a tiger");
}
}
public static void main (String[] args){
Animal tiger = new Tiger();
tiger.Scream(); //true
Object tiger = new Tiger();
tiger.Scream(); //false
Object tiger = new Tiger();
((Animal) tiger).Scream(); //true
}
}
Run Code Online (Sandbox Code Playgroud) 有没有办法将两个或多个数组放入array_unique()函数?如果没有,是否有其他解决方案可以从多个阵列获得独特的结果?
我有这段代码来区分两个对象数组:
$diff = array_udiff($a, $b,
function($obj_a, $obj_b) {
return $obj_a->id - $obj_b->id;
}
);
Run Code Online (Sandbox Code Playgroud)
$ a是
[
{
"id": "7",
"attribute": "instagram"
},
{
"id": "8",
"attribute": "snapchat"
},
{
"id": "9",
"attribute": "facebook"
}
]
Run Code Online (Sandbox Code Playgroud)
$ b是
[
{
"id": "7",
"attribute": "instagram",
"value": "somevalue"
}
]
Run Code Online (Sandbox Code Playgroud)
$ diff应该返回对象数组
[
{
"id": "8",
"attribute": "snapchat"
},
{
"id": "9",
"attribute": "facebook"
}
]
Run Code Online (Sandbox Code Playgroud)
它确实如此,但只有当$ b是一个空数组时.结果是正确的(我得到一个对象数组,$ a,因为$ b是空的).
但是当$ b中至少有一个对象时,$ diff会向我返回我不想要的以下内容.
{
"1": {
"id": "8",
"attribute": "snapchat"
},
"2": …Run Code Online (Sandbox Code Playgroud) 我目前有以下strpos/stripos(尝试过两者,不会改变结果),用于标记论坛帖子中的某些针.
if (stripos($row->message, (string)$commit) !== false) {
// Do stuff
}
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,当haystack($ row-> message)包含needle($ commit)(使用强制转换,因为$ commit可以是一个int)strpos/stripos返回false时,东西大多数工作正常.
例如:
$test = stripos($row->message, (string)$commit);
Run Code Online (Sandbox Code Playgroud)
非工作场景的一个示例是:
// (string)$commit
string(7) "818df50"
// $row->message
string(321) "Intro. Crashes as soon as the main menu is shown. Graphics are horribly broken, no fixes have been found as of yet. [attachment=194] Build Used: Pull Request #3333 (0.0.3-5929) -> RPCS3-v0.0.3-2017-08-27-818f50b Side note: States it can display at 1080p, yet it is boxed in 1080p. However, it is fine in 720p." …Run Code Online (Sandbox Code Playgroud) 为什么我dump()在使用它之前只能到达我的日期对象?
这是我的功能:
public function checkSubscriptionEndDate($user){
$subscriptionEndDate = $user->getSubscriptionEndDate();
dump($subscriptionEndDate);
if($subscriptionEndDate==null){
$subscriptionEndDateMessage = $this->get('translator')->trans('subscriptionEndDateMessage');
$subscriptionStatus = "error";
}else{
$subscriptionEndDateDate = $subscriptionEndDate->date;
// CHECK IF SUBSCRIPTION END DATE IS BEFORE NOW
if (date('now') < $subscriptionEndDateDate) {
dump('before');
$subscriptionStatus = "success";
$subscriptionEndDateMessage = $this->get('translator')->trans('subscriptionStatusSuccess').' '.date('d/m/Y',strtotime($subscriptionEndDateDate));
}else{
dump('after');
$subscriptionStatus = "error";
$subscriptionEndDateMessage = $this->get('translator')->trans('subscriptionStatusError').' '.date('d/m/Y',strtotime($subscriptionEndDateDate));
}
}
return array(
'subscriptionEndDateMessage' => $subscriptionEndDateMessage,
'subscriptionStatus' => $subscriptionStatus
);
return $subscriptionEndDateMessage;
}
Run Code Online (Sandbox Code Playgroud)
当我这样做时,页面按预期加载,没有问题.但如果我删除这一行:
dump($subscriptionEndDate);
我无法再加载$subscriptionEndDate->date此错误页面中所示:
我想分解一个字符串或一个整数并用空格分隔。
例如,我有这个 int 12345678,我希望它的数字变成123 45678。我想将前三个数字分开。有人可以给我一个线索或提示如何实现这一点,比如在 PHP 中使用什么函数?我认为使用 anexplode在这里不起作用,因为该explode函数需要一个分隔符。
我有一个例子,我无法弄清楚为什么结果不是我所期望的.
码:
class A
{
protected $a = 1;
function a(){
echo $this->a++;
}
}
class B extends A
{
protected $a = 10;
function b(){
echo $this->a++; $this->a() . PHP_EOL;
}
}
$b = new B();
$b->b();
Run Code Online (Sandbox Code Playgroud)
在我看来,我可以从结果中得到的最大值就像1011,但看起来结果是10111213.我无法弄清楚为什么我得到这个结果.有人可以向我解释一下引擎盖下的内容吗?