我有点看看Laravel 4 幕墙下面发生了什么.
我们以此Facade为例:
File::get(someArgs);
Run Code Online (Sandbox Code Playgroud)
如果我没有弄错的话,一步一步(过度简化)的调用将是:
//static method invocation which are all extended from Facade class
File::__callStatic(get, someArgs)
//returns an instance of FileSystem
File::resolveFacedeInstance('files')
FileSystem->get(someArgs)
Run Code Online (Sandbox Code Playgroud)
我感到困惑的是在下面的方法File :: resolveFacadeInstance()的注释行中:
protected static function resolveFacadeInstance($name)
{
if (is_object($name)) return $name;
if (isset(static::$resolvedInstance[$name]))
{
return static::$resolvedInstance[$name];
}
/**
* The line that i'm confused about
*/
return static::$resolvedInstance[$name] = static::$app[$name];
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:
如果File :: get()是被调用的Facade
static :: $ app [$ name]将解析为我认为Application ['files']或Application->文件,它们又调用Application - …
我一直在使用作曲家大约一个月了.然后有一天作曲家给我看了这条消息:
警告:作曲家的这个开发版本已经超过30天了.建议通过运行"/ usr/local/bin/composer self-update"来更新它以获取最新版本.
我根据文档全局安装了composer.
which composer
/usr/local/bin/composer
Run Code Online (Sandbox Code Playgroud)
运行sudo composer自我更新给了我这样的信息:
/ usr/bin/env:php:没有这样的文件或目录
我 用这个命令检查了/ usr/bin/env:
whereis /usr/bin/env
env: /usr/bin/env /usr/bin/X11/env /usr/share/man/man1/env.1.gz
Run Code Online (Sandbox Code Playgroud)
我的php版本:
PHP 5.5.1 (cli) (built: Jul 26 2013 19:50:47)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans
Run Code Online (Sandbox Code Playgroud)
事实上似乎/ usr/bin/env存在.
我正在使用ubuntu 12.04LTS.
更新
strace sudo composer self-update 2>&1 | grep open …Run Code Online (Sandbox Code Playgroud) 这些是用于将制表符转换为空格的 bash 命令。这是原始 stackoverflow 帖子的链接。
这个\;在命令末尾使用
find /path/to/directory -type f -iname '*.js' -exec sed -ie 's|\t| |g' '{}' \;
Run Code Online (Sandbox Code Playgroud)
这个使用+而不是\;.
find /path/to/directory -type f -iname '*.js' -exec sed -ie 's|\t| |g' '{}' '+'
Run Code Online (Sandbox Code Playgroud)
两者到底有什么区别?
目前我一直在尝试使用grunt并将使用grunt-contrib-qunit,它似乎需要grunt-contrib-connect。
我真正困惑的是 grunt-contrib-connect 启动了一个静态 Web 服务器。静态这个词确实让我感到困惑。在开发过程中,我是否需要一个 Web 服务器来存储图像、html、css、js 等静态文件?
我目前正在学习 PHP 并使用xampp其中包括apache。它与 Apache 等 Web 服务器有何不同?因为我认为它们将使用不同的端口,所以我可以并排使用它们吗?
首先,我为我的流浪盒设置了一个单独的ssh密钥.我在〜/ .ssh/config上进行了此设置
Host vag_ubuntu14
HostName 127.0.0.1
Port 2222
User vagrant
IdentityFile ~/.ssh/vag_ubuntu14/id_rsa
Run Code Online (Sandbox Code Playgroud)
然后我用这个命令将公钥复制到了流浪盒的〜/ .ssh/authorized_keys.
cat ~/.ssh/vag_ubuntu14/id_rsa.pub | ssh -p2222 vagrant@127.0.0.1 'cat > ~/.ssh/authorized_keys'
Run Code Online (Sandbox Code Playgroud)
所以当运行ssh vag_ubuntu14按预期工作时.但是跑到vagrant sshsv到流浪者的盒子是行不通的.它会导致身份验证失败
这是我当前的Vagrant文件,其中指定了私钥的路径.
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu14_04"
config.vm.provider "virtualbox" do |vb|
vb.name = "Ubuntu 14.04"
end
config.vm.provision :shell, path: "provision/bootstrap.sh"
config.ssh.private_key_path = '/home/chris/.ssh/vag_ubuntu14/id_rsa'
end
Run Code Online (Sandbox Code Playgroud)
但是当我运行时vagrant ssh-config,它不尊重我在Vagrantfile上指定的私钥的自定义路径.
Host default
HostName 127.0.0.1 …Run Code Online (Sandbox Code Playgroud)