Tag: PHP的

composer php需要本地包

我有几个图书馆(Foo and Bar),我正在协同开发,但在技术上还是独立的。 以前我刚刚重新定义自动加载器喜欢"Foo\\": "../Foo/src" ,但现在我已经添加了一个Guzzle依赖项到Foo,Bar翻转它的盖子,因为它不是它的一个依赖。 目录结构: /home/user/src/ Foo/ src/ FooClient.php composer.json Bar/ src/ BarClient.php composer.json 理论自动加载声明:[在Bar / composer.json中] "require": { "local": "../Foo/composer.json" } 示例代码: require('vendor/autoload.php'); $f = new \Bar\BarClient(new \Foo\FooClient()); 如何解决这个问题,而无需设置本地Composer回购? 我想维护这些作为单独的包,只是一个需要另一个,因此处理其他的依赖关系。 回答后编辑: 感谢信仰者,我做了以下几件事: 初始化的git回购: cd ~/src/Foo && git init && echo -e "vendor\ncomposer.lock" > .gitignore && git add ./ && git commit -m […]

在PHP5类中,何时调用私有构造函数?

比方说,我正在写一个PHP(> = 5.0)类,这是一个单身人士。 我读过的所有文档都说,使类构造器是私人的,所以类不能直接实例化。 所以如果我有这样的事情: class SillyDB { private function __construct() { } public static function getConnection() { } } 有没有什么情况下__construct()被调用,而不是如果我正在做一个 new SillyDB() 在课堂内部打电话? 为什么我允许从内部实例化SillyDB呢?

转储所有的PHPvariables

是否有可能转储所有全局variables在PHP脚本? 说这是我的代码: <?php $foo = 1; $bar = "2"; include("blah.php"); dumpall(); // displays $foo, $bar and all variables created by blah.php 另外,是否可以将所有定义的常量转储到PHP脚本中。

PDO将所有组键 – 值对提取到关联数组中

我偶尔会遇到类似于以下情况的查询: SELECT `key`, `value` FROM `settings`; 在这种情况下,我想获得一个关联数组,使用key & value作为数组的相应条目,例如,如果数据库包含:( ('first_name', 'Tom'), ('last_name', 'Jeferson') ,数组应该是array('first_name' => 'Tom', 'last_name' => 'Jeferson'); 。 最常见的方法是: $settings_flat = $db ->query("SELECT `name`, `value` FROM `settings`;") ->fetchAll(PDO::FETCH_ASSOC); $settings = array(); foreach ($settings_flat as $setting) { $settings[$setting['name']] = $setting['value']; } *另一种方法是通过调用fetchAll(PDO::FETCH_COLUMN)两次然后使用array_combine来创build数组。 但是,由于涉及两个数据库的调用,所以我忽略了这个选项。 有没有另外一种方法来做到这一点?

检查包含(或要求)是否存在

你怎么检查一个include / require_once是否存在,然后再调用它,我试图把它放在一个错误块中,但PHP不喜欢这样做。 我认为file_exists()会花费一些努力,但是这将需要整个文件path,并且相对包含不能被轻易地传入。 还有其他的方法吗?

将当前页面保存为HTML到服务器

有人build议将当前页面保存为HTML文件到服务器的方法是什么? 在这种情况下,还要注意安全性不是问题。 我已经花了无数个小时来寻找这个,并没有发现一件事情。 您的帮助非常感谢,谢谢! 编辑 谢谢大家的帮助,非常感谢。

Laravel雄辩地更新,只要有改变

有没有什么办法可以在Laravel使用雄辩的模型更新logging,只要对logging进行了更改? 我不希望任何用户请求数据库一遍又一遍,只是按下button来保存更改。 我有一个javascriptfunction,启用和禁用保存button根据是否有什么改变了页面,但我想知道是否有可能确保在服务器端也做这种function。 我知道我可以通过检查logging是否有变化来自己完成(意思是:不要求框架的内部function),但在这样做之前,我想知道Laravel雄辩的模型是否已经处理所以我不需要重新发明轮子。 这是我用来更新logging的方式: $product = Product::find($data["id"]); $product->title = $data["title"]; $product->description = $data["description"]; $product->price = $data["price"]; //etc (string values were previously sanitized for xss attacks) $product->save();

如何做左派join主义?

这是我正在尝试显示用户历史logging的function。 为此,我需要显示用户的当前信用以及他的信用logging。 这是我想要做的: public function getHistory($users) { $qb = $this->entityManager->createQueryBuilder(); $qb->select(array('a','u')) ->from('Credit\Entity\UserCreditHistory', 'a') ->leftJoin('User\Entity\User', 'u', \Doctrine\ORM\Query\Expr\Join::WITH, 'a.user = u.id') ->where("a.user = $users ") ->orderBy('a.created_at', 'DESC'); $query = $qb->getQuery(); $results = $query->getResult(); return $results; } 但是,我得到这个错误: [语法错误]行0,列98:错误:预期的学说\ ORM \查询\ Lexer :: T_WITH,得到'开' 编辑 :我用连接条款中的“WITH”replace了“ON”,现在我所看到的只是来自连接列的1个值。

检查由PHP SoapClient调用在/不发送请求之前创build的XML

问题:在实际发送请求之前,有没有办法查看使用PHP SoapClient函数调用创build的XML? 背景: 我是WSDL通信的新手,我有一个客户希望我使用PHP进行开发,这是一种与使用ASP.NET编写的WSDL服务进行通信的方式。 我已经得到了很多,但是在传递一个复杂的types时遇到了一个问题。 到目前为止,我已经尝试了几个不同的东西。 1)设置单个数组,例如$params->Person->name $params->Person->address 2)设置一个数组$Person = array('name'=>"joe",'address' = "123"); 然后作为parameter passing给调用“Person”=> $ Person; 和其他一些。 但每次我得到错误 SoapException:服务器无法处理请求—> System.Exception:Person是必需的。 在服务名称。 为了进一步解决问题,我想查看正在发送的XML文档,以查看它是否以我期待的方式创build复杂types。 我正在使用$client = new SoapClient('wsdldoc.asmx?WSDL');创build服务$client = new SoapClient('wsdldoc.asmx?WSDL'); 用$client->CreateUser($params);调用它$client->CreateUser($params); 然后尝试使用函数$client->__getLastRequest();来查看它$client->__getLastRequest(); 但它从来没有使__getLastRequest,因为它在调用CreateUser($ params)时发生致命错误。 再次的问题:有没有办法查看由CreateUser($ params)调用创build的XML而不实际发送它,并导致致命的错误

PHP中有什么相当于C#中的LINQ?

PHP中有什么相当于C#中的LINQ ?