小编Neo*_*734的帖子

我可以从类外的特征调用静态函数吗?

考虑有多个类都需要访问配置存储机制的情况,但由于框架的架构而无法从基类扩展。除此之外,我想保持存储机制的灵活性(以后可以切换存储后端)。

我觉得创建一个特性来进行实际保存并在所有类中使用这些函数是有意义的(例如我$_SESSION用作存储系统):

trait MyTrait {

  function setting_enabled() {
    return !empty($_SESSION['setting']) ? TRUE : FALSE;
  }

  function enable_setting() {
    $_SESSION['setting'] = TRUE;
  }

  function disable_setting() {
    $_SESSION['setting'] = FALSE;
  }

}
Run Code Online (Sandbox Code Playgroud)

这在课堂上非常有效。然而,还有一个文件不是类,而是普通的 PHP,我还需要知道是否启用了该设置。

我尝试将函数声明为static

trait MyTrait {

  static function setting_enabled() { // Declared as static function
    return !empty($_SESSION['setting']) ? TRUE : FALSE;
  }

  ...
}
Run Code Online (Sandbox Code Playgroud)

然后从特征调用静态函数,效果很好。

if (MyTrait::setting_enabled()) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

然而感觉并不完全正确。另一方面,创建一个使用 trait 的新空类并实例化它以获取值似乎有很多开销。

我可以这样做吗(从 PHP 5.6 开始,但也考虑 PHP 7.x 的未来)?

php standards class traits

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

如何使用Picasa API检索私有photoalbums

我有使用Picasa工作的oAuth授权,我可以使用access = all获取所有相册,但是当我在以下网址中更改对"私人"的访问权限时,我希望获得我的私人相册.我得到了所有的环聊专辑(能见度有限).

https://picasaweb.google.com/data/feed/api/user/default?kind=album&access= {access}

根据文档,有3个可能的值.'All'返回所有内容,'public'仅返回我的公开相册(如预期的那样).但我想知道切换到Google+照片是否可能包含Picasa API文档中未提及的其他参数?

是否可以检索我的公开和私人相册,但不能检索我的环聊相册?

php picasa google-api

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

如何为mysql innodb配置memcached?

目前,我们有一个网站在 Centos 6.5 网络服务器上运行,具有直接管理功能。APC 是在过去配置的并且运行良好,但一些阅读建议还实现 memcached 来缓存一些静态表(例如菜单)。

从 MySQL 5.6 开始,innoDB 表与 mysql memcache 守护进程兼容,因此我开始遵循本指南: http: //dev.mysql.com/doc/refman/5.6/en/innodb-memcached-installing.html。运行配置脚本并安装守护程序。

然而,Drupal memcache 插件看不到 memcache 正在运行。该模块显然正在检查 php memcached 守护进程,而我的守护进程已经在 mysql 中运行。

由于两个扩展都被称为memcached.so,我们强烈地感觉到这是同一件事。实际上是否有两个不同的事情,Drupal 是否不支持 InnoDB memcached 守护进程,我是否需要两者(php 扩展来访问 mysql 扩展?),或者这应该有效,我们是不是出了什么问题?

更新

状态报告显示类似“未运行”的内容,但我的一位同事现在已经安装了 PHP PECL 扩展,并且它似乎正在工作。但后来我还是不明白MySQL innodb deamon插件是做什么的。是否不需要,或者它是否比 PHP 扩展更能改善数据库访问?

mysql memcached

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

如何在Google地图几何库中使用containsLocation.

我正在尝试使用containsLocationGoogle几何图书库,但无法让它工作......

var point = new google.maps.LatLng(51.331, 3.538);
var poly = [
 new google.maps.LatLng(51.401818509550615, 3.547626782103622),
 new google.maps.LatLng(51.397574277049365, 3.563607598960424),
 new google.maps.LatLng(51.398540111384975, 3.567880788749134),
 ... // it is a lot bigger
];

if(google.maps.geometry.poly.containsLocation(point, poly) == true) {
 alert("yes");
}
Run Code Online (Sandbox Code Playgroud)

Javascript控制台出错,但这指向Google的lib中的一个函数.所以我认为问题应该在这个函数的某个地方.

google-maps google-maps-api-3

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

如何在 Jenkins Blue Ocean 中运行“sidecar”容器?

总的来说,我对 Jenkins 和 CI/CD 相当陌生,但相信我已经搜索了足够长的时间来得出结论,事情并不像我预期的那样。

我想在我的网站上进行一些前端测试,就像在现实生活中一样,我想在一个 Docker 容器中测试网站,在另一个容器中测试数据库。Jenkins 将此记录为“sidecar”容器,它可以是管道的一部分。

他们的例子:

node {
    checkout scm
    /*
     * In order to communicate with the MySQL server, this Pipeline explicitly
     * maps the port (`3306`) to a known port on the host machine.
     */
    docker.image('mysql:5').withRun('-e "MYSQL_ROOT_PASSWORD=my-secret-pw" -p 3306:3306') { c ->
        /* Wait until mysql service is up */
        sh 'while ! mysqladmin ping -h0.0.0.0 --silent; do sleep 1; done'
        /* Run some tests which require MySQL */
        sh 'make check' …
Run Code Online (Sandbox Code Playgroud)

jenkins docker jenkins-pipeline jenkins-blueocean

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