小编Ala*_*orm的帖子

什么可以改变php.ini和PHP文件之间的include_path

我在一个我没有设置的系统上继承了一些代码,我遇到了一个跟踪PHP包含路径设置的问题.

我有一个php.ini文件,其中包含以下include_path

 include_path = ".:/usr/local/lib/php"
Run Code Online (Sandbox Code Playgroud)

我在webroot中有一个名为test.php的PHP文件,其中包含以下phpinfo调用

 <?php
      phpinfo();
Run Code Online (Sandbox Code Playgroud)

当我查看phpinfo调用时,将覆盖include_path的本地值

                 Local Value                                        Master Value
 include_path    .;C:\Program Files\Apache Software Foundation\     .:/usr/local/lib/php
                 Apache2.2\pdc_forecasting\classes               
Run Code Online (Sandbox Code Playgroud)

此外,php.ini文件表明没有加载其他.ini文件

Configuration File (php.ini) Path           /usr/local/lib
Loaded Configuration File                   /usr/local/lib/php.ini
Scan this dir for additional .ini files     (none)
additional .ini files parsed                (none)
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是,标准PHP系统中的其他内容(包括一些PEAR库)可能会覆盖php.ini和正在解释/执行的实际php代码之间的include_path.

php apache include

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

如何在magento中获取属性组

我需要获取某个属性集的属性组,我该怎么做?

我想我得到了属性组ID,但我似乎无法获得该组的属性.

    $attributes = $_product->getAttributes();

    foreach($attributes as $attribute)
    {
    $group_id =  $attribute->getData('attribute_set_info/' . $_product->getAttributeSetId() . '/group_id'); 
    print_r($group_id);          

    }  
Run Code Online (Sandbox Code Playgroud)

我真的很感激,如果有人可以帮助我,thanx;)

php orm magento

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

用于调试PHP中的内存泄漏/使用错误的工具/技术

我有一个命令行脚本,它array()通过循环运行一个文件,并使用文件名作为参数来调用辅助对象上的方法.

每次运行脚本时,PHP memory_get_usage报告的数字越来越大

53294264
57019624
61374624
65699176
70230600
75157152
79900392
84630472
89359264
94300016
100031176
105202448
110360808
115777528
121146976
126784824
132366952
Run Code Online (Sandbox Code Playgroud)

直到我出错了

PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted
Run Code Online (Sandbox Code Playgroud)

很明显,某些东西正在泄漏内存,或某种全局/静态存储区域不断被添加.在PHP中调试此类错误的最佳方法是什么?有没有在PHP中无意中发生这种情况的常见情况?xDebug有一些神奇的选项可以帮助我查明这一点吗?其他工具?

我提出的最好的方法是跟随执行链并通过调用memory_get_usage()来乱丢代码库,直到找到确切的问题,但这似乎是一种单调乏味且低效的方法.

php memory memory-leaks memory-management xdebug

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

定义Magento类名称的字符串的名称

Magento使用工厂模式来实例化类中的对象

$model  = Mage::getModel('catalog/product'); //Mage_Catalog_Model_Product by default
$helper = Mage::helper('catalog/data');   //Mage_Catalog_Helper_Data by default
Run Code Online (Sandbox Code Playgroud)

这些字符串将扩展为类名,并且可以将System配置为替换默认值.

这些字符串被称为或应该被称为什么? 我一直在滥用术语URI(有时用"URI-like"这句话来缓和滥用),但这不是真的."类名"似乎也不正确,因为它很容易引起混淆(你是在谈论工厂类名,还是实际的PHP类名?)

任何人都对此有权威吗?

php design-patterns magento factory-pattern

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

Drupal的模块挂钩呼叫在哪里开始?

在Drupal 7(和Drupal 6?)系统中,什么"开始"钩子调用过程,或"顶级"钩子调用位于何处?

正如我目前了解Drupal模块系统,任何模块都能够为另一个模块创建一个钩子来实现.这意味着Drupal的大部分执行都是为其他模块实现钩子的模块,这反过来又为其他模块提供了钩子来实现.

我不清楚的是,是否有一个初始的顶级钩子在引导程序中调用以启动此过程,或者是否有几个非模块调用启动钩子调用过程,或其他什么(道歉)这是模糊和新的,但就像我说我不明白)

我查看了这个_drupal_bootstrap_full功能,最后有一个很有希望

module_invoke_all('init');
Run Code Online (Sandbox Code Playgroud)

但是,我对该modules/文件夹的搜索只显示了一个"init"钩子函数,这似乎不是一个启动点

system/system.api.php
1737:function hook_init() {

function hook_init() {
  drupal_add_css(drupal_get_path('module', 'book') . '/book.css');
}
Run Code Online (Sandbox Code Playgroud)

所以,这对我说模块系统之外的东西踢掉了这一切.这是发生在一个地方,还是多个地方.这些地方在哪里?

我目前不是一个沉重的Drupal用户.我所有这一切的最终目标是孤立地理解Drupal的模块系统,这样我就可以调查并理解Drupal如何使用它的模块构建大多数人认为是Drupal的应用程序.欢迎任何/所有解释,但我试图从架构的角度理解事物.我知道你不需要这些知识来使用Drupal,但是我的大脑已经坏了,在我知道基本的PHP代码在做什么之前我不会让我前进.

php drupal drupal-hooks drupal-modules

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

_beforeFoo回调设计模式的更好/正式名称

许多PHP系统将实现对象类型(例如模型),允许客户端程序员在他们自己的类中定义类似这样的方法

class Car extends Model
{
    public function _afterSave()
    {
         //do something every-time this model is saved
    }
}
Run Code Online (Sandbox Code Playgroud)

在文档和教程中,这种模式通常作为"观察者/监听者"模式引入.

但是,虽然您可以将这些方法描述为侦听父类的操作,但这似乎与传统的OOP 观察者模式非常不同.

是否存在允许客户端程序员定义这些前/后方法的模式的正式名称,或者这只是早期PHP开发人员在语言开发其类似OOP的java/C#之前开辟的东西?

php design-patterns

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

Laravel应用程序显示文件列表而不是"Hello Page"

我刚开始使用Laravel 5,但我还是无法显示经典的Hello页面; 我只看到我的应用程序文件列表.

我试图改变我的.htaccess文件,清除我的缓存,创建一个新的应用程序,但无济于事.我知道PHP在我的服务器上运行良好,只有这一个Laravel应用程序似乎无法处理它.这似乎我错过了一些显而易见的事情,但我不知道应该知道我应该问什么.

这是一个截图,以展示我所看到的:

这是我用来创建应用程序的命令

 $ laravel new m6g
Run Code Online (Sandbox Code Playgroud)

我正在使用股票apache2在Mac上工作(未设置为mamp)

php apache .htaccess laravel

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

Laravel Collections:移位值*和*键?

laravel 集合方法(或 PHP 数组方法)是否有办法移出集合的第一个键/值对?

也就是说,如果我有下面的小程序

$collection = collect(['key1'=>'value1','key2'=>'value2']);        

var_dump(
    $collection->first()
);

var_dump(
    $collection->shift()
);
Run Code Online (Sandbox Code Playgroud)

我可以shift() value1关闭集合的开头,或者抓住它而不通过将其删除first()。我想要的是用一行代码来关闭或获取第一个值(即)的键的方法key1。我知道我可以做这样的事情

$result = (function($c){
    foreach($c as $key=>$value)
    {
        return $key;
    }
})($collection);
Run Code Online (Sandbox Code Playgroud)

但我希望/想知道 Laravel 是否有更优雅/紧凑的东西。

php collections laravel

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

当函数参数是接口时复制什么

假设:在 go 中,所有函数参数都是按值传递的。为了获得按引用传递的语义/性能,go 程序员通过指针传递值。Go 仍然会复制这些参数,但它会复制一个指针,有时比复制实际参数的内存效率更高。

问题:当你传递一个接口时发生了什么?即,在这样的程序中

package main
import "fmt"

type Messages struct {
    hello string
}

func main() {
  sayHelloOne(Messages{"hello world"});
  sayHelloTwo(&Messages{"hello world"});
  sayHelloThree(Messages{"hello world"});
}


//go makes a copy of the struct
func sayHelloOne(messages Messages) {
  fmt.Println(messages.hello)
}

//go makes a *pointer* to the struct
func sayHelloTwo(messages *Messages) {
  fmt.Println(messages.hello)
}

//go --- ???
func sayHelloThree(messages interface{}) {
  fmt.Println(messages.(Messages).hello)
}
Run Code Online (Sandbox Code Playgroud)

当程序员调用该函数时,参数会发生什么情况sayHelloThree?被messages抄袭了吗?或者它是一个指向messages被复制的指针?还是有一些对我来说很奇怪的推迟到messages演员阵容出现?

performance parameter-passing go

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

如何使用 Psalm 的 UnusedMethod 功能?

我正在尝试将psalm 静态分析工具用于 PHP。我的理解是该工具可以告诉我代码库中未使用的方法。但是,如果我创建一个简单的测试文件

#File: src/test.php
<?php
class A {
    private function foo() : void {}
}

new A();
Run Code Online (Sandbox Code Playgroud)

然后运行 psalm

$ ./vendor/bin/psalm --find-dead-code src/test.php 
Scanning files...
Analyzing files...

------------------------------
No errors found!
------------------------------

Checks took 0.16 seconds and used 32.694MB of memory
Psalm was able to infer types for 100% of the codebase
Run Code Online (Sandbox Code Playgroud)

psalter,

$ ./vendor/bin/psalter --find-unused-code --dry-run --issues=UnusedMethod src/test.php 
Scanning files...
Analyzing files...

------------------------------
No errors found!
------------------------------

Checks took 0.05 seconds and …
Run Code Online (Sandbox Code Playgroud)

php psalm-php

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