小编Cho*_*pic的帖子

PHP静态方法

我知道静态方法无法访问其类类型的实例对象的状态,因此$this在它们内部引用会导致错误.但是对象可以使用对象到成员运算符引用静态方法->

$obj->staticMethod();
Run Code Online (Sandbox Code Playgroud)

甚至可以通过参数传递它们的状态.

$para1 = $obj->para1;

$para2 = $obj->para2;

$obj->staticMethod($para1, $para2);
Run Code Online (Sandbox Code Playgroud)

在静态上下文中解析静态时,最后一个示例是如何实现的.如果有人可以向我解释一下php代码中静态的一般行为.你甚至可以谈论C相关的概念,如果它会有所帮助.

php static-methods

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

在供应商目录中运行 Composer 包的测试

我有一个用 composercreate-project命令创建的项目,但在运行之前composer install,我向项目composer.json文件中添加了一个额外的包。安装软件包后,我正确地拥有了所有依赖项,包括供应商目录中新添加的依赖项。我现在想要的是运行我手动添加到 composer.json 的包的测试。我尝试了以下,但似乎没有运行上述包的测试

./vendor/bin/phpunit 
Run Code Online (Sandbox Code Playgroud)

php phpunit composer-php

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

Router::scope 和 Router::prefix 之间的 cakephp 区别

我知道路由器的前缀方法为路由添加了前缀,但我仍然很困惑范围方法对路由的作用。它只是前缀的别名还是有自己的用途。

Router::prefix('api', function ($routes) {       
 $routes->scope('/v1', function ($routes) {                       
 $routes->connect('/', ['action'=>'index']);              
 $routes->connect('/:id', ['action'=>'view', ':id']);         
}); 
});  
Run Code Online (Sandbox Code Playgroud)

cakephp-3.0

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

Golang频道并发问题

我正在尝试Golang中的频道概念。我写了下面的程序操场来实现使用通道的计数器。但是,尽管我正在goroutine主体中进行一些打印,但是我没有得到任何输出。

func main() {
    wg := sync.WaitGroup{}
    ch := make(chan int)

    count := func(ch chan int) {
        var last int
        last = <-ch
        last = last + 1
        fmt.Println(last)
        ch <- last
        wg.Done()
    }

    wg.Add(10)
    for i := 1; i <= 10; i++ {
        go count(ch)

    }
}
Run Code Online (Sandbox Code Playgroud)

我希望至少有一些输出,但是我什么也得不到。

concurrency channel go goroutine

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

PHP 对在路径中使用 __DIR__ 和 ../ 感到困惑

我遇到了一个具有这种结构的项目。

-projectRoot
--src
---bootstrap.php
--composer.json
--public
---index.php
---css
---images
Run Code Online (Sandbox Code Playgroud)

现在在公共目录中,index.php包含以下内容

//in projectRoot/public/index.php
<?php

  require __DIR__."/../src/bootstrap.php";

 ?> 
Run Code Online (Sandbox Code Playgroud)

我知道__DIR__常量解析到当前正在执行的 php 脚本文件的绝对目录。所以在上面的例子中,我希望它是ProjectRoot/public.

问题

requireindex.php中将查看哪个路径?..上面路径中的父目录解析为什么?

PS:我读到上面设置的重点是确保相对路径继续工作,无论 index.php 在哪里调用。这究竟是如何工作的?谢谢。

php filesystems path

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

令人困惑的函数调用语法

我是Golang初学者,现在已经学习了几天。我已经了解了很多语法,并开始对此感到满意。今天我在下面的Go中偶然发现了一个片段

log.Fatal(http.ListenAndServe(":3000", handlers.CORS(originsOk, headersOk, 
methodsOk)(router)))
Run Code Online (Sandbox Code Playgroud)

ListernAndServe具有以下签名

func ListenAndServe(addr string, handler Handler) error
Run Code Online (Sandbox Code Playgroud)

现在,令人困惑的部分是Handler上述服务器代码中的参数。为什么语法如下所示

 handlers.CORS(originsOk, headersOk, methodsOk)(router)
Run Code Online (Sandbox Code Playgroud)

(router)参数列表的一部分吗?

有人可以分解这个语法让我理解。

go

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

默认服务器多路复用器如何匹配 url 模式

我已经看到使用以下代码从请求路径中提取 url 参数的简单路由器实现。

handler := http.NewServerMux()
handler.HandleFunc('/user/', func(w http.ResponseWriter, r *http.Request) {
     name := strings.Replace(r.URL.Path, '/user/', "", 1)// this code

    io.WriteString(w, fmt.Sprintf("Hello %s\n",name)
})
Run Code Online (Sandbox Code Playgroud)

然后他们将是另一条路线/user(注意缺少尾部斜线)。

handler.HandleFunc('/user', handleUser)
Run Code Online (Sandbox Code Playgroud)

让我们说例如r.URL.Path/user/name。第一条路线将匹配,而第二条较短的路径将不匹配。从技术上讲,请求路径不应该匹配任何路由,因为一个路由太长而另一个太短。

这就提出了一个问题,即 Golangmux在将请求与路由匹配时遵循什么规则。乍一看似乎它采用了路径的最长匹配,但是如果在程序源中首先定义了最短路径呢?

有人可以就ServerMux行为方式给出简单的解释。

go mux

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