小编Smx*_*Cde的帖子

PHP:如何使用类函数作为回调

我有一个类,我想用作回调的方法.如何将它们作为参数传递?

Class MyClass {

    public function myMethod() {
        $this->processSomething(this->myCallback); // How it must be called ?
        $this->processSomething(self::myStaticCallback); // How it must be called ?
    }

    private function processSomething(callable $callback) {
        // process something...
        $callback();
    }

    private function myCallback() {
        // do something...
    }

    private static function myStaticCallback() {
        // do something...
    }   

}
Run Code Online (Sandbox Code Playgroud)

UPD:如何从static方法中做同样的事情(什么时候$this不可用)

php oop callback

80
推荐指数
4
解决办法
6万
查看次数

Amazon RDS:将快照还原到现有实例

我已经创建了我的实例的快照,并在数据库中做了一些不必要的更改.

现在我想从这个快照中恢复我的实例.

当我尝试这样做时 - 除了我拥有的实例之外,它还创建了一个实例.

我指定"数据库实例标识符",然后我得到两个具有相同ID的实例.

所以我的问题是:有没有办法将快照恢复到现有实例?

因为在其他情况下 - 使用不同的端点(主机名)创建新实例,我需要更改我的配置以访问数据库.或者有更好的方法来管理这种情况?

mysql amazon-web-services amazon-rds

55
推荐指数
4
解决办法
3万
查看次数

PHP 7 RC3:如何安装缺少的MySQL PDO

我正在尝试使用PHP 7 RC3+ Nginxon 设置webserver Ubuntu 14.04(用于测试目的).

我使用ubuntu/trusty64来自OndřejSurý的PHP 7 RC 3(https://launchpad.net/~ondrej/+archive/ubuntu/php-7.0)在Vagrant中安装了Ubuntu .

我找不到安装方式MySQL PDO(PHP看到PDO类,但没有任何与MySQL相关的东西,比如PDO::MYSQL_ATTR_DIRECT_QUERY等)

看起来没有LIB php7.0-mysql(通过与标准类比php5-mysqlndphp7.0-fpm从的Ondrej等)

PDOphpinfo():

PDO support      enabled
PDO drivers      no value
Run Code Online (Sandbox Code Playgroud)

我怎么才能得到它?

php mysql ubuntu pdo php-7

50
推荐指数
5
解决办法
19万
查看次数

Docker:基础图像

我试图了解Docker的概念,但有一点我无法理解:

据我所知,图像(因此 - 容器)可以从不同的Linux发行版中实例化,例如Ubuntu,CentOS等.

让我们说在主机上我运行标准的Ubuntu 14.04,

  • 如果我使用未从同一分配实例化的容器会发生什么?
    • 不是14.04?
    • 不是Ubuntu(或任何其他基于Debian的)?
    • 使用不同的图像基本图像有什么缺点?(假设我使用的是使用Ubuntu作为基本图像的图像A,使用Debian作为基本图像的图像B和使用CentOS作为基本图像的图像C)?

额外问题:如果开发人员未在Docker集线器描述中指定它,我如何知道用于图像的基本图像?

先感谢您!

docker

8
推荐指数
2
解决办法
1024
查看次数

Visual Studio Code - 自动导入/快速修复不起作用

我的 VS Code 不会从node_modules.

我试图让它在两台 PC 和一台 Mac 上运行 - 结果是一样的:在我输入时没有建议导入,当我专注于一个符号并按Ctrl+./时没有选项Cmd+.- 没有快速修复建议。

我尝试安装自动导入扩展 - 没有建议。

我阅读了有关“添加所有丢失的导入”的发行说明帖子,并尝试应用快捷方式 - 不走运,它没有做任何事情。

在这一点上我完全迷失了,我看到很多帖子有人问同样的问题,人们建议他们通过按 Ctrl+ 来使用 Quick Fix。但正如您在屏幕截图中看到的那样 - 它没有任何建议。

我正在使用 TypeScript,但我也用 JS 尝试过这个 - 不走运。

在屏幕截图上,我在 WSL 中运行我的应用程序,但我也在 Windows 和 macOS 上尝试了本机运行。

有任何想法吗?谢谢!

快速修复 不建议导入

visual-studio-code vscode-settings

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

Laravel - 自定义.env文件

Laravel假定该.env文件应描述环境,并且不应该将其提交给您的repo.

如果我想在我的仓库中保留两个.env文件devproduction(说.env-production.env-dev)并添加一些应该使用哪个文件的自定义逻辑,例如基于当前域名,该怎么办?

就像是

if ($_SERVER['HTTP_HOST'] == 'prod.domain.com') {
    load('.env-production');
} else {
    load('.env-dev');
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现它?谢谢!

php laravel

6
推荐指数
2
解决办法
5448
查看次数

在PHP / Redis上是否有很好的缓存标记解决方案?

我正在寻找一种简单的存储缓存的方法,Redis并使用标记标记缓存tags,因此在需要时,我可以轻松删除所有标记有特定标记的缓存。

是否有一个好的即用型解决方案?(我将在PHP中使用访问Redis)

我自己做,因为据我所知,我需要将标签存储为一组,其中值是使用标签的缓存键。我什至可以解决删除缓存时的情况,并且应该从标记的集合中删除其键(为此,我可以将标记列表存储在缓存的元素中)。但是我不确定缓存过期时如何执行此操作,在这种情况下,其密钥会“卡在”标签中,而下次我按标签删除缓存时,它将用密钥清除缓存,而该密钥可能不再使用。

因此,我正在寻找现成的解决方案,至少要看它是如何完成的。

php tagging caching redis

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

QUnit - 循环测试,索引始终相同

我正在尝试测试一些代码,为此我需要在循环中进行一些测试,如下所示:

for (var i = 1; i <= 5; i++) {
    QUnit.test('Hello ' + i, (assert) => {
        console.log(i);
        assert.ok( 1 == '1', 'Result: ' + i);
    });
}
Run Code Online (Sandbox Code Playgroud)

点击此处查看jsFiddle的工作示例

但由于某种原因i,循环(和结果)总是6如此,所以这段代码给出了这样的输出:

6
6
6
6
6
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

javascript jquery qunit

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

使用Object.keys()时保留类型

我有一个带有键入键的对象,我们称它们为状态(StatusesType)。我需要遍历对象,并将键传递给需要相同类型参数的某些方法StatusesType,让它成为statusPrinter()

type StatusesType = 'PENDING' | 'APPROVED' | 'REJECTED';
type SomeMap = {
    [key in StatusesType]?: number
}

const STATUSES: SomeMap = {
    PENDING: 5,
    REJECTED: 2,
};

function statusPrinter(val: StatusesType) {
    console.log('- ', val);
}

Object.keys(STATUSES).forEach(status => {
    statusPrinter(status);
});
Run Code Online (Sandbox Code Playgroud)

但是当我调用statusPrinter(status);TypeScript返回此错误时

error TS2345: Argument of type 'string' is not assignable to parameter of type 'StatusesType'.

如何传递此密钥保存类型?

我知道我可以为此强制执行TS,statusPrinter(<StatusesType>status);但是我认为这是我应该做的最后一件事,我更喜欢本机解决方案。

更新:如果无法使用Object.keys()保留类型遍历对象键-我有哪些选项?有没有一种方法可以遍历所有键保留类型,如果可以,哪种方法最好?我没有固定,Object.keys()但我想保留原始的对象结构。

谢谢!

static-typing typescript

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

物业历史不存在

我试图使用React和启动一个新项目TypeScript,但我坚持使用的一件事是Router,由于某种原因TypeScript不承认history属性,尽管根据文档它应该可用。

我的组件

import * as React from 'react'
import * as ReactDom from 'react-dom'
import { Provider } from 'react-redux'
import { BrowserRouter as Router} from 'react-router-dom';
import createBrowserHistory from 'history/createBrowserHistory'

let history = createBrowserHistory();

ReactDom.render(
    <Provider>
        <Router history={history} > {/* Error is in this line */}
            <div />
        </Router>
    </Provider>,
    document.getElementById('app')
);
Run Code Online (Sandbox Code Playgroud)

错误信息:

Error:(11, 11) TS2339:Property 'history' does not exist on type 'IntrinsicAttributes 
& IntrinsicClassAttributes<BrowserRouter> & Readonly<{ children?: ReactNode; …
Run Code Online (Sandbox Code Playgroud)

javascript frontend typescript reactjs react-router

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