小编Don*_*nic的帖子

为什么我可以在php7中使用字符串文字作为类?

请考虑以下代码:

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-7

3
推荐指数
2
解决办法
339
查看次数

存储MySQL凭据的安全方法

我刚刚开始学习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?
任何人都可能阅读数据库的凭据并乱搞它的方式吗?

有什么想法吗?

php mysql database security

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

使用python和GObject在林间空地添加组合框

我正在尝试将组合框应用到一个小的GTK3接口,但我无法弄清楚如何填充它的列表,以及如何将接口的组合框与我的python代码连接起来.

有人能告诉我一个小例子吗?其余部分我将能够完成.

python combobox glade gtk3

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

为什么在用作其他对象类型时必须转换对象类型的引用变量

虽然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)

java reference object

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

如何使用array_unique从多个数组中获取唯一值?

有没有办法将两个或多个数组放入array_unique()函数?如果没有,是否有其他解决方案可以从多个阵列获得独特的结果?

php arrays array-unique

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

array_udiff返回不同的结果

我有这段代码来区分两个对象数组:

$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)

php arrays json

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

strpos/stripos(严格比较)失败

我目前有以下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)

php strpos stripos

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

为什么我只能在使用之前转储()它时才能到达我的日期对象?

为什么我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此错误页面中所示:

在此输入图像描述

php datetime var-dump symfony

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

分解一个数字并用空格分隔

我想分解一个字符串或一个整数并用空格分隔。

例如,我有这个 int 12345678,我希望它的数字变成123 45678。我想将前三个数字分开。有人可以给我一个线索或提示如何实现这一点,比如在 PHP 中使用什么函数?我认为使用 anexplode在这里不起作用,因为该explode函数需要一个分隔符。

php string

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

后增量和复古兼容性

我有一个例子,我无法弄清楚为什么结果不是我所期望的.

码:

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.我无法弄清楚为什么我得到这个结果.有人可以向我解释一下引擎盖下的内容吗?

php oop

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