小编Ben*_*rey的帖子

get_browser 减慢页面加载速度,还有其他选择吗?

我已经使用 PHP 的get_browser功能有一段时间了,但从未真正注意到我的任何网站有任何滞后。然而,最近我注意到我的一个网站在服务器端加载的时间比它应该花费的时间多一秒左右。我注释掉了该get_browser功能,页面立即加载。

这可能与我的服务器有关还是get_browser已知功能很慢?该网站是我唯一在 Windows 服务器上运行的网站,这可能是问题吗?或者这可能与我的 browscap.ini 文件有关(每天从http://browsers.garykeith.com更新)?

如果我无法加速该get_browser功能,是否有其他替代方法?我需要可靠地收集有关浏览器的以下信息:

  1. 它是什么浏览器,即 Chrome、IE、Safari 等
  2. 它是什么版本(完整版),即 10.1 等
  3. 无论是爬虫还是机器人

我不知道从用户代理收集这些信息的任何其他方法,使用 javascript 会更好吗(我宁愿不要,因为我需要值服务器端)?

javascript php user-agent browser-detection browscap

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

如何在整个班级中创建变量全局变量

非常简单的问题,是否有可能创建一个从类外部检索的变量,"全局"到整个类,这样我就不必在每个方法的开头调用'global $ variable'了?

这就是我目前正在做的事情:

class test{
    public function testing(){
        global $globalVariable,

        // Do something
    }
    public function testing_two(){
        global $globalVariable,

        // Do something
    }
}
Run Code Online (Sandbox Code Playgroud)

换句话说,我可以将变量导入构造函数,从而使整个类可以访问它们,而不必为每个方法调用'global'吗?

UPDATE

不确定我是否已经明确表达了我希望实现的目标.请看下面:

$globalVariable = 'hello';

class test{
    public function testing(){
        global $globalVariable,

        // Do something
    }
    public function testing_two(){
        global $globalVariable,

        // Do something
    }
}
Run Code Online (Sandbox Code Playgroud)

php class

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

在类中调用本地方法时需要'this'吗?

当我从我的类中调用本地方法时,如下例所示,我是否必须先放入$this->它?

例:

class test{
    public function hello(){
        $this->testing(); // This is what I am using
        testing(); // Does this work?
    }
    private function testing(){
        echo 'hello';
    }
}
Run Code Online (Sandbox Code Playgroud)

我问的原因是因为我正在使用带有预定义PHP函数的array_map函数,现在我将使用我定义的函数.这就是我的意思:

class test{
    public function hello(){
        array_map('nl2br',$array); // Using predefined PHP function
        array_map('mynl2br',$array); // My custom function defined within this class
    }
    private function mynl2br(){
        echo 'hello';
    }
}
Run Code Online (Sandbox Code Playgroud)

php class callback

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

使用PHP根据请求缩小JS/CSS文件

我目前正在编写一个javascript类,它根据站点的需要从我的服务器加载库.很像Google API e.g. google.load('jquery','1.7.1').

我想做的其中一件事是将所有JS/CSS文件合并为一个并使用PHP缩小它们.我已经很好地了解了网络,虽然我能够在Stackoverflow上找到关于这个主题的一些问题,但它们似乎有点过时了.因此,结果,我决定重新开启这场辩论,以获得有关这一主题的最新信息.

我能够在网上找到两个PHP Javascript minifiers,这些是

  1. JShrink
  2. Javascript Packer

我确实找到了第三个(JSMin),但这没有得到维护

我的问题很简单:

  1. 这些脚本是否可靠且可维护?他们甚至需要维护吗?
  2. 他们压缩CSS吗?
  3. 哪个脚本更好?

javascript css php ajax minify

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

使用CSS技巧切出边框

问题...

我试图把它放在div边界上,同时在每个边上留下一个空隙div.看这里:

边界切出

注意黑色div两侧的间隙.

除了显而易见的两个选项之外,我看不到可能的解决方案:

  1. 在整个宽度上放置边框,然后使用背景覆盖图像以隐藏后边框
  2. 或者,将边框分成列,然后只添加一个边距(在我的情况下可能是最好的解决方案)

我试过的......

好吧,因为我希望被建议一个很酷的CSS技巧,我没有尝试任何东西,因为我不知道从哪里开始...因此,一个很酷的CSS技巧 ...

我的问题(如果还不清楚的话)

有没有任何方法(除了上面提到的方法),或者很酷的技巧来实现我在上图中所说明的内容?

如果除了我已经说过的方法之外没有其他解决方案,请不要浪费时间回答这个问题,因为我自己能够自己编写这些代码,而其他SO用户则更需要你的帮助:-)

更新

这是一个jsFiddle展示它看起来没有我想要的差距:

http://jsfiddle.net/BDt7v/

html css css3

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

得到过去X周的周数

我有一个脚本,在过去12周内构建一个周数数组,如下所示:

$week_numbers = range(date('W'), date('W')-11, -1);
Run Code Online (Sandbox Code Playgroud)

但是,如果当前周数为1,那么这将返回如下数组:

Array
(
    [0] => 1
    [1] => 0
    [2] => -1
    [3] => -2
    [4] => -3
    [5] => -4
    [6] => -5
    [7] => -6
    [8] => -7
    [9] => -8
    [10] => -9
    [11] => -10
)
Run Code Online (Sandbox Code Playgroud)

但我需要这个数组看起来像这样:

Array
(
    [0] => 1
    [1] => 52
    [2] => 51
    [3] => 50
    [4] => 49
    [5] => 48
    [6] => 47
    [7] => 46
    [8] => 45
    [9] => 44
    [10] …
Run Code Online (Sandbox Code Playgroud)

php date date-range

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

Laravel/Lumen Core 应用程序中的覆盖方法

是否可以覆盖 Laravel/Lumen 中定义的函数 Application类中?

例如,这是isDownForMaintenanceLumenApplication类中的定义:

public function isDownForMaintenance() : bool
{
    return false;
}
Run Code Online (Sandbox Code Playgroud)

我想用我自己的实现来覆盖它,如下所示:

public function isDownForMaintenance() : bool
{
    // Do something…
}
Run Code Online (Sandbox Code Playgroud)

我试过了…

应用服务提供者.php

$this->app->extend(‘app’, function () {
    return new Application; // Extension of Laravel/Lumen/Application
});
Run Code Online (Sandbox Code Playgroud)

应用程序.php

class Application extends BaseApplication
{
    public function isDownForMaintenance() : bool
    {
        // Do Something…
    }
}
Run Code Online (Sandbox Code Playgroud)

php laravel lumen

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

Watchers 是否与 Vue 中的全局 Mixins 一起工作?

我已经搜索了 Vue 文档,除非我是盲人,否则我看不到任何声明不能在子组件上使用观察者到父组件,或者在我的情况下,全局混合属性。但是,由于某种原因,我无法让我的工作...

我有一个全局 mixin,用于锁定/解锁窗口滚动。很简单,我试图bodyLocked从子组件监听全局 mixin 上布尔属性的更改。

出于某种原因,观察者确实在页面加载时触发,但在那之后,它似乎没有监听变化。

这是我的 mixin(它在全球范围内与 一起使用Vue.mixin()):

export default {

    data() {
        return {
            bodyLocked: false
        }
    },

    methods: {

        /**
         * Lock the DOM body to disable scrolling.
         *
         * @return void
         */
        _lockBody() {
            this.bodyLocked = true;
            document.documentElement.classList.add('no-scroll');
        },

        /**
         * Unlock the DOM body to enable scrolling.
         *
         * @return void
         */
        _unlockBody() {
            this.bodyLocked = false;
            document.documentElement.classList.remove('no-scroll');
        }

    }

};
Run Code Online (Sandbox Code Playgroud)

这是一个示例子组件:

export default {

    watch: {

        bodyLocked: function(locked) …
Run Code Online (Sandbox Code Playgroud)

javascript vue.js

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

如何在 Vue 插件中观察对象属性

背景

考虑以下非常基本的插件:

import SomeObject from "./SomeObject";

/**
 * Some Cool Plugin...
 */
export default {
    install(Vue){

        Vue.prototype.$someObject = Vue.observable(SomeObject);

    }
}
Run Code Online (Sandbox Code Playgroud)

上面的目的是在我的应用程序中注册一个反应性的对象。

问题与疑问

Vue.prototype.$someObject包含某些需要watched在全局级别而不是组件级别上的属性。

有没有办法在installVue 插件的方法中将观察者附加到 Vue 实例?

请注意,我不是在寻找以下答案,我已经知道这是可以做到的,但它违背了将代码分成插件的意义。全局混合也不够......

watch: {

    '$someObject.foo': {
        handler(value) {
            console.log(value);
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

我试过的

根据此处概述的文档,我假设我可以按照以下方式做一些事情:

export default {
    install(Vue){

        Vue.prototype.$someObject = Vue.observable(SomeObject);

        // I have tried all of the following:
        Vue.watch(Vue.prototype.$someObject.foo, value => { console.log(value) });
        Vue.$watch(Vue.prototype.$someObject.foo, value => { console.log(value) });
        Vue.prototype.watch(Vue.prototype.$someObject.foo, value => …
Run Code Online (Sandbox Code Playgroud)

javascript watch vue.js

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

仅在 Laravel 生产中使用 Redis 进行节流

背景

Laravel 开箱即用地提供了两个可用于速率限制(节流)的中间件:

\Illuminate\Routing\Middleware\ThrottleRequests::class
\Illuminate\Routing\Middleware\ThrottleRequestsWithRedis::class
Run Code Online (Sandbox Code Playgroud)

正如文档所述,如果您使用 Redis 作为缓存驱动程序,您可以像这样更改映射Kernel.php

/**
 * The application's middleware aliases.
 *
 * Aliases may be used instead of class names to conveniently assign middleware to routes and groups.
 *
 * @var array<string, class-string|string>
 */
protected $middlewareAliases = [
    // ...
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequestsWithRedis::class
    // ...
];
Run Code Online (Sandbox Code Playgroud)

问题

问题是上述内容不是动态的,依赖于环境。例如,在我的staging环境production中,我使用 Redis,但在我的local环境中development,我不使用 Redis。

潜在的解决方案

有一个明显的脏修复,如下所示Kernel.php):

/**
 * The application's middleware aliases.
 *
 * Aliases may …
Run Code Online (Sandbox Code Playgroud)

php throttling rate-limiting redis laravel

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