小编Jun*_*ior的帖子

在类中调用函数时触发事件

PHP中是否可以在调用类中的函数时触发事件,而不将其添加到类中的每个函数中?

例:

<?php
    class A {
        function xxx() {
            //this function will be called everytime I call another function in this class  
        }

        public static function b() {
            return 'Hello Stackoverflow!';
        }

        public static function c() {
            //I also want this function to trigger the event!
        }
    }

    echo A::b();
?>
Run Code Online (Sandbox Code Playgroud)

php events class function

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

APC会出现在PHP7中吗?

我在互联网上读到APC将包含在PHP6中.然而,PHP6项目被取消了,他们跳过了一个主要版本,以避免混淆,这再次引起更多的混乱.然而这又是另一次讨论.

我的问题是:

是否仍会在PHP7中引入,包含和启用APC或任何其他缓存模块?

我问的原因是因为我正在考虑将memcached实现到我的项目中.但是如果在PHP7中存在本机缓存解决方案,我宁愿坚持这一点.

php caching apc

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

将参数从主线程传递到新线程

如何使用扩展名将参数从主线程传递到PHP中的新线程pthreads

与此类似的东西如何将参数传递给Java线程?只是在PHP中。

php multithreading pthreads parameter-passing

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

为什么不能将PDO对象序列化?

我想提出一个多线程的CLI-PHP应用程序和需要序列化PDO object工作之间传递的线程内,并使用魔术方法睡眠线程唤醒它__sleep()__wakeup().然而,PDO或者mysqli扩展不支持它.旧mysql_*()api做了这个,但它已被弃用并删除.

<?php
    // Application
    $link = new PDO('mysql:host=localhost;port=3306;dbname=testdatabase', 'root', '');

    $obj = serialize($link);
Run Code Online (Sandbox Code Playgroud)

很好地产生错误

PHP致命错误:未捕获异常'PDOException',并在W:\ workspace\Sandbox\application.php中显示消息'您无法自定义或反序列化PDO实例':5堆栈跟踪:

#0 [内部函数]:PDO - > __ sleep()

#1 W:\ workspace\Sandbox\application.php(5):serialize(Object(PDO))

在第5行的W:\ workspace\Sandbox\application.php中抛出#2 {main}

php pdo

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

发生错误时ob_start被中断

所以ob_start()应该以捕捉输出,直到另一个缓冲区函数被调用一样ob_get_clean(),ob_get_contents(),ob_get_flush().

但是当缓冲区读取器内部抛出异常时,它会通过停止并回显输出而不是继续捕获它来影响读取器.这是我想要防止的.

让我们说这是我的脚本:

<?php
    error_reporting(0);
    try {
        ob_start();
            echo "I don't wanna output this what so ever, so want to cache it in a variable with using ob_ functions";
            $unlink = unlink('some file that does not exist');
            if(!$unlink) throw new Exception('Something really bad happen.', E_ERROR); //throwing this exception will effect the buffer
        $output = ob_get_clean();
    } catch(Exception $e) {
        echo "<br />Some error occured: " . $e->getMessage();
        //print_r($e);
    }
?>
Run Code Online (Sandbox Code Playgroud)

该脚本将输出:

I …
Run Code Online (Sandbox Code Playgroud)

php buffer

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

使用数组更新MySQL

是否有可能在PHP中使用MySQLi更新具有数组的表而不知道字段名称,有多少及其值.

我尝试过在密钥和值字段上插入问号的预备语句(?=?).我在想是否可以在更新查询中使用()VALUES()我可能有一个解决方案,但我猜不存在这样的事情.

看看我的剧本:

<?php
    class UserHandler {
        public function updateUserData($array, $id) {
            global $mysqli;
            $stmt = $mysqli->prepare("UPDATE users SET ?=? WHERE id = ?");
            $stmt->bind_param('ssi', $array[0], $array[1], $id);
            $stmt->execute();
            return true;
        }
    }

    $users = new UserHandler;
?>
Run Code Online (Sandbox Code Playgroud)

我希望用法如下:

<?php
    $users->updateUserData(array(
        'firstname' => 'Wanda',
        'lastname' => 'Merritt',
        'state' => 'IN'
        'address' => '693 Pearcy Avenue',
        'zipcode' => 46625,
    ), 45);

    $users->updateUserData(array(
        'firstname' => 'Stanley',
        'lastname' => 'Lewis',
        'password' => '123123'
    ), 159);
?>
Run Code Online (Sandbox Code Playgroud)

php mysql mysqli

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

获取两个字符串之间的差异

我正在创建一个通配符搜索/替换函数,需要找到两个字符串之间的差异.我尝试过的一些功能,如array_diffpreg_match,浏览我的路槽〜无解10页谷歌.

我现在有一个简单的解决方案,但希望在通配符之前实现对未知值的支持

这是我得到的:

function wildcard_search($string, $wildcard) {
    $wildcards = array();
    $regex = "/( |_|-|\/|-|\.|,)/";
    $split_string = preg_split($regex, $string);
    $split_wildcard = preg_split($regex, $wildcard);
    foreach($split_wildcard as $key => $value) {
        if(isset($split_string[$key]) && $split_string[$key] != $value) {
            $wildcards[] = $split_string[$key];
        }
    }

    return $wildcards;
}
Run Code Online (Sandbox Code Playgroud)

用法示例:

$str1 = "I prefer Microsoft products to Apple but love Linux"; //original string
$str2 = "I prefer * products to * but love *"; //wildcard search
$value = wildcard_search($str1, $str2);
//$value …
Run Code Online (Sandbox Code Playgroud)

php wildcard

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

从子类更改父变量

我正在尝试在 php 中构建简单的配置系统,您可以在其中扩展基础并将数据放入子类中,而父类会为您处理一切。我会让代码不言自明。但是,当我尝试这样做时,子类不会更改父变量。

父类

class ConfigBase {
    protected static $data = [];

    public static function Get($name)
    {
        if(!isset(self::$data[$name]))
        {
            return null;
        }

        return self::$data[$name];
    }

    public static function Set($name, $value)
    {
        self::$data[$name] = $value;
    }
}
Run Code Online (Sandbox Code Playgroud)

儿童班

class Database extends ConfigBase {
    protected static $data = [
        'host'      => 'localhost',
        'username'  => 'root',
        'password'  => '',
        'database'  => '',
        'port'      => 3306
    ];
}
Run Code Online (Sandbox Code Playgroud)

输出:

// NULL
echo Database::Get('host');
Run Code Online (Sandbox Code Playgroud)

有没有办法/解决方法/黑客来完成这个?

php

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

JavaScript替换字符串中的多重数字

我试图创建一个JavaScript函数,用一个更高的数字替换一个数字,但我无法让它工作.

我尝试了许多没有运气的事情.

<script type="text/javascript">
function change(text) {
 var array = {"1":"6", "2":"7", "3":"8", "4":"9", "5":"0", "6":"1", "7":"2", "8":"3", "9":"4", "0":"5",}

 for (var val in array)
    text = text.replace(new RegExp(val, "g"), array[val]);

 return text;
}

document.write(change('123456789'));
</script>
Run Code Online (Sandbox Code Playgroud)

这会返回,123401234但应该返回6789012345

我也试过这个:

function change_new(text) { text = text.replace(/1/g, "6").replace(/2/g, "7").replace(/3/g, "8").replace(/4/g, "9").replace(/5/g, "0").replace(/6/g, "1").replace(/7/g, "2").replace(/8/g, "3").replace(/9/g, "4").replace(/0/g, "5"); return text; }
Run Code Online (Sandbox Code Playgroud)

结果相同.

我究竟做错了什么?

javascript replace

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