作为一名PHP开发人员,我发现自己经常使用Composer.在过去,这是个人项目,所以我没有太多的问题,但现在与Laravel 4项目需要部署,我很难适应我的工作流程.
我的所有项目都是git存储库,因此按照惯例,因为它仍然非常错误,像大多数开发人员一样,我把vendor目录放在我的.gitignore.现在的问题是:我还使用Git部署到服务器,并且所有逻辑都没有上传供应商目录,因为它没有被存储库跟踪.
所以我的问题是那些与Composer和Git合作的人比我更长的时间:保持服务器同步的最佳工作流程是什么?如何跟踪供应商文件夹而不真正跟踪它?我每次使用Composer更新时都尝试上传它,但我的一些供应商文件夹非常大,每次更新时我都无法手动上传30Mb的文件.
我真的不知道,你们是怎么解决这个问题的?我试着不忽略vendor文件夹,但是Git只是搞砸了,有一半被认为是克隆的回购并且无论如何都被忽略了等等.
更新:请注意,我在共享主机上,因此我无法访问服务器的终端.
我有以下代码(例如,实际上,这是我的真实代码):
<?php
class Foobar
{
public static function foo()
{
exit('foo');
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行$foobar = new FooBar; $foobar->foo()它显示foo.
为什么PHP会尝试在对象上下文中使用静态方法?有办法避免这种情况吗?
好吧,你们没有得到我的问题:我知道静态和非静态方法之间的区别以及如何调用它们.这是我的全部意义,如果我打电话$foobar->foo(),为什么PHP会尝试运行静态方法?
注意:我运行PHP 5.4.4,报告错误E_ALL.
在Sublime中,我非常喜欢"分割选择成线"的快捷方式(super + shift + l).但是我在PHP Storm 8中找不到相同的东西,我在编辑菜单中找到了"拆分成行"功能,但是喂它或者\n或\ r似乎不起作用.PS中是否存在该功能?
我正在尝试做一些我认为非常简单的事情,但由于我在PHP中对OOP相对较新,所以我遇到了一些麻烦.
这是我的代码:
<?php
class MyClass
{
protected $variable = 'DEFAULT';
function __construct($newVariable)
{
$this->variable = $newVariable;
echo $this->variable;
}
}
class OtherClass extends MyClass
{
function __construct()
{
echo $this->variable;
}
}
$foo = new MyClass('MODIFIED'); // Output : MODIFIED
$bar = new OtherClass(); // Output : DEFAULT
?>
Run Code Online (Sandbox Code Playgroud)
我搜索了很多不同的线程和网站,但还没有找到我如何将$ variable的重新定义值传递给子类.有人可以指导我吗?如果有办法的话.
提前致谢.
编辑澄清脚本中实际发生的事情我遇到了这个问题:我有一个创建表单的类,在该类中有几个变量告诉我们在什么环境中的函数:如果它是多语言形式,如果我想要一个简单的形式或一个结构化的形式,这样的参数.并且这些环境变量中的一些通过其功能的执行来修改.
现在,由于我的页面的需要,我有一个专门用于创建"选择"字段的子类.它继承了主类的核心功能来创建字段等,但子类需要多个参数.事实上,我仍然希望select类从它们所处的状态继承主类的environnement参数.
当我输入它时,我意识到我接近它的方式可能不是正确的方法,因为当我查看我的代码时,我认为可能有另一种方法可以做到这一点.在我的代码中,我有两个对象,我需要它只有一个,但我真的不知道如何实际放置它.
我正在慢慢地从PHP迁移到Python.特别是,当我在webdev/webdesign工作时,我想使用Python显示一个基本的HTML页面,使用以下代码:
#!/usr/bin/python
print('<html><head></head><body>This is a test</body></html>')
Run Code Online (Sandbox Code Playgroud)
同样,重点是看它是否有效.在我的主机上将文件作为index.cgi在线发送我没有问题显示文件的内容.当我尝试在MAMP上安装WSGI模块时,问题就开始了,或者只是为了让Python一般地工作.当它转到localhost/index.cgi时,将显示文件的内容而不是其结果.我已经按照了六个教程,似乎没有一个工作,我总是遇到一个问题.它似乎来自这样一个事实,即MAMP附带的Apache不是以允许您向其添加模块的方式构建的(例如wsgi).
这也是因为我找不到最近关于如何在MAMP上安装Python的文章,它们都是从2008年或2009年开始,使用旧版本的MAMP,Python和Macports.
有人能指出我目前的程序来完成这项工作吗?
编辑:好的,在找到这篇文章之后,我收集了MAMP默认情况下不处理MAMP /中cgi-bin /文件夹之外的CGI脚本.所以我按照解释修改了Apache conf文件,它现在显然读取了.cgi文件,但是上面显示的内容引发了错误500.代码是罪魁祸首还是MAMP?
我不知道为什么,但是RVM似乎无法更改默认的Ruby。我正在使用Oh My Zsh,并尝试了所有发现的内容,但似乎无济于事。
? Sites rvm use 2.0.0 --default
Using /Users/anahkiasen/.rvm/gems/ruby-2.0.0-p247
? Sites rvm list
rvm rubies
=* ruby-2.0.0-p247 [ x86_64 ]
# => - current
# =* - current && default
# * - default
? Sites rvm reload && rvm list
RVM reloaded!
rvm rubies
* ruby-2.0.0-p247 [ x86_64 ]
# => - current
# =* - current && default
# * - default
Run Code Online (Sandbox Code Playgroud)
现在,将Ruby设置为默认值,但RVM不会将其加载为“当前”,这意味着它不会加载与其关联的gemset。
? Sites rvm use 2.0.0
Using /Users/anahkiasen/.rvm/gems/ruby-2.0.0-p247
? Sites gem list …Run Code Online (Sandbox Code Playgroud) php ×3
composer-php ×1
deployment ×1
git ×1
inheritance ×1
mamp ×1
oop ×1
phpstorm ×1
python ×1
rvm ×1
wsgi ×1