问题列表 - 第2332页

使用静态工厂模式时,包含PHP库的最佳方法是什么?

我的PHP库中有几个静态工厂模式.但是,内存占用空间不大,我们希望减少执行期间所需的文件数量.以下是我们今天的例子:

require_once('Car.php');
require_once('Truck.php');

abstract class Auto
{
    // ... some stuff ...

    public static function Create($type)
    {
        switch ($type) {
            case 'Truck':
                return new Truck();
                break;
            case 'Car':
            default:
                return new Car();
                break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是不可取的,因为即使只需要一个或另一个,也需要包含Car.php和Truck.php.据我所知,require/include和他们的......一旦变化包括与调用相同范围的库.这是真的?

如果是这样,我相信这会导致内存泄漏:

    abstract class Auto
    {
        // ... some stuff ...

        public static function Create($type)
        {
            switch ($type) {
                case 'Truck':
                    require_once('Truck.php');
                    return new Truck();
                    break;
                case 'Car':
                default:
                    require_once('Car.php');
                    return new Car();
                    break;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

在我看来,在第二个例子中,即使使用了require_once风格,多次调用Create()也会因为调用范围而导致多个需求.

这是真的?在这样的示例中,在php中动态包含库的最佳方法是什么?

谢谢!

php polymorphism require include require-once

7
推荐指数
1
解决办法
8929
查看次数

如何在SSIS作业中消除"未使用的输出列"警告?

我正试图在我的SSIS进度日志中删除一些虚假警告.我在使用原始SQL来完成工作的任务中收到一堆关于未使用列的警告.我有一个数据流负责在加载新数据之前将数据存档到临时表中.数据流如下所示:

+--------------------+
| OLEDB Source task: |
| read staging table |
+--------------------+
          |
          |
+---------------------------+
| OLEDB Command task:       |
| upsert into history table |
+---------------------------+
          |
          |
+---------------------------+
| OLEDB Command task:       |
| delete from staging table |
+---------------------------+
Run Code Online (Sandbox Code Playgroud)

我的'upsert'任务是这样的:

--------------------------------------
-- update existing rows first...
update history
set    field1 = s.field1
    ...
from   history h
inner  join staging s
on     h.id = s.id
where  h.last_edit_date <> s.last_edit_date -- only update changed records

-- ... then …
Run Code Online (Sandbox Code Playgroud)

logging ssis

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

是否有任何性能原因在Java中声明方法参数final?

是否有任何性能原因在Java中声明方法参数final?

如:

public void foo(int bar) { ... }
Run Code Online (Sandbox Code Playgroud)

与:

public void foo(final int bar) { ... }
Run Code Online (Sandbox Code Playgroud)

假设bar只读取并且从未修改过foo().

java performance final

117
推荐指数
2
解决办法
3万
查看次数

将Java String与数组匹配的问题

我需要查看字符串值是否与对象值匹配,但为什么这不起作用?

public int countPacks(String flavour) {
    int counter = 0;
    for(int index = 0; index < packets.size(); index++) {            
        if (packets.equals(flavour)) {
           counter ++;
        }
        else {
           System.out.println("You have not entered a correct flavour");
        }
    } 
    return counter; 
}
Run Code Online (Sandbox Code Playgroud)

java arrays string

0
推荐指数
1
解决办法
5804
查看次数

在Rails中向Integer类添加方法的最佳位置在哪里?

在Rails中向整数类添加方法的最佳位置在哪里?我想添加一个to_metersto_miles方法.

ruby monkeypatching ruby-on-rails

5
推荐指数
1
解决办法
4054
查看次数

如何格式化java中的持续时间?(例如格式H:MM:SS)

我想用H:MM:SS这样的模式格式化持续时间(以秒为单位).java中的当前实用程序旨在格式化时间而不是持续时间.

java duration date-formatting

148
推荐指数
14
解决办法
12万
查看次数

为什么有时在类中定义C++方法?

我经常在C++中遇到大型的非模板类,其中简单的方法直接在头文件的类体中定义,而不是在实现文件中单独定义.例如:

class Foo {
  int getBar() const { return bar; }
  ...
};
Run Code Online (Sandbox Code Playgroud)

为什么这样?好像有缺点.实现不是应该隐藏的,代码不太可读,如果类的头文件包含在许多不同的地方,编译器的负担也会增加.

我的猜测是人们打算在其他模块中内联这些功能,这可以显着提高性能.但是,我听说较新的编译器可以跨模块在链接时进行内联(和其他过程间优化).对这种链接时优化的支持有多广泛,它是否真的不需要这些定义?这些定义还有其他充分的理由吗?

c++ compiler-construction optimization inline-functions

10
推荐指数
2
解决办法
1671
查看次数

如何在Rails插件中测试视图?

我正在写一个Rails插件,其中包含一些部分内容.我想测试部分内容,但是我很难设置一个可以渲染它们的测试.没有相关的控制器,所以我只假装一个:

require 'action_controller'
require 'active_support'
require 'action_pack'
require 'action_view'

class MyTest < Test::Unit::TestCase
  def setup
    @renderer = ActionController::Base.new
    @renderer.append_view_path File.expand_path(File.join(File.dirname(__FILE__), '..', 'views'))
  end

  def test_renders_link
    result = @renderer.render(:partial => '/something')
    assert ...
  end
end
Run Code Online (Sandbox Code Playgroud)

但那个:render电话总是爆炸.我尝试使用的是一个ActionView::Base而不是一个ActionController::Base,但这种情况甚至更少.

有人有成功吗?

ruby testing plugins ruby-on-rails actionview

5
推荐指数
1
解决办法
1249
查看次数

为什么c ++中的char和bool大小相同?

我正在阅读C++编程语言.Stroustrup在其中陈述sizeof(char) == 11 <= sizeof(bool).具体取决于实施.为什么像布尔这样的简单值与char相同?

c++ boolean

31
推荐指数
4
解决办法
3万
查看次数

在基于Gecko的浏览器中消失了CSS表格单元格边框

我有一个非常具体的html表构造,似乎揭示了一个Gecko错误.

这是问题的提炼版本.在基于gecko的浏览器(例如FF)中观察下表:(您必须将其复制并粘贴到新文件中)

<style>
table.example{
    border-collapse:collapse;
}
table.example td {
    border:1px solid red;
}
</style>
<table class="example">
    <thead>
        <tr>
            <th>1</th>
            <th>2</th>
            <th>3</th>          
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>1</td>
            <td>2</td>
            <td rowspan="3">3</td>

        </tr>
        <tr>
            <td>1</td>
            <td>2</td>
        </tr>
        <tr>
            <td>1</td>
            <td rowspan="2">2</td>      
        </tr>
        <tr>
            <td>1</td>
            <td>3</td>
        </tr>
    </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

右下角单元格中的"3"上缺少一条线 - 在任何其他浏览器中查看该线条,该线条将按预期显示.有趣的是,抛弃桌子的thead部分,看看我们得到了什么:

<style>
table.example{
    border-collapse:collapse;
}
table.example td {
    border:1px solid red;
}
</style>
<table class="example">
    <tbody>
        <tr>
            <td>1</td>
            <td>2</td>
            <td rowspan="3">3</td>

        </tr>
        <tr>
            <td>1</td>
            <td>2</td>
        </tr>
        <tr>
            <td>1</td>
            <td rowspan="2">2</td>      
        </tr>
        <tr>
            <td>1</td> …
Run Code Online (Sandbox Code Playgroud)

css firefox gecko html-table border

8
推荐指数
1
解决办法
6598
查看次数