在另一个类中使用一个类的输出的正确方法

时间:2011-04-23 01:05:05

标签: php

我使用以下代码生成数组:

// Create new customer object
$customers = new customers;

// Array of user ids 
$customers->ids = array(34,23,78);  

// Process customers
$customers->processCustomers();

上面的代码将根据传递给它的用户输出一个包含所需用户信息的数组。

现在我需要在以下代码中对这个新的客户数组采取进一步行动:

// Create new parsing object
$parseCustomers = new parse;

// Array of customer data 
$parseCustomers->customers = ???????????    

// Finalize new transaction
$parseCustomers->finalizeTransaction();

我需要将数组从第一类输出传递到第二类,我想知道最佳实践是什么。

此客户数组有时会非常大,所以理想情况下我不会在任何时候有2个包含相同数组的变量。

2 个答案:

答案 0 :(得分:0)

如果您指的是$customers对象中已处理的数组,则需要一些公共方法来获取该数据。

假设您有一个公共方法getData()。您的代码看起来就像这样......

// Create new parsing object
$parseCustomers = new parse;

// Array of customer data 
$parseCustomers->customers = $customers->getData();    

// Finalize new transaction
$parseCustomers->finalizeTransaction();

答案 1 :(得分:0)

有几种不同的方法可以解决这个问题。这是两个:

  1. 您可以从班级返回MySQL结果集。我会使用mysql_unbuffered_query()运行您的查询,以便在您需要记录时仅占用内存。

  2. 当您获得结果时,您可以通过引用传递您的客户:

  3. 以下是#2的代码:

    // Create new parsing object
    $parseCustomers = new parse;
    
    // Array of customer data (not needed)
    // $parseCustomers->customers = ???????????    
    
    // Finalize new transaction
    $parseCustomers->finalizeTransaction($arrCustomers);
    

    您的函数声明将更改为:

    function finalsizeTransaction(&$arrCustomers) {
    
        // Do your processing
    
    }
    

    这样您就可以使用ONE系列客户,从而消除重复。如果你正在处理非常大的数据集,那么它会导致PHP在内存不足时出错,我会使用无缓冲的查询方法。

    希望有所帮助!