代码之家  ›  专栏  ›  技术社区  ›  bbutle01

php扩展类

  •  1
  • bbutle01  · 技术社区  · 16 年前

    class MySF extends SforceEnterpriseClient {};
    $mySforceConnection = new $MySF;
    

    class SforceEnterpriseClient  extends SforceEnterpriseClient {};
    $mySforceConnection = new $SforceEnterpriseClient ;
    
    5 回复  |  直到 16 年前
        1
  •  1
  •   Asaph    16 年前

    你可能可以用魔法玩一些加载类的技巧 __autoload() 函数并删除对salesforce文件的引用,即require、require_once、include、include_once;但为了可读性和可维护性,您可能应该在这里走很长的路,修改所有引用以使用子类。

        2
  •  0
  •   Kyle J. Dye    16 年前

    这样怎么样,在类的源文件中,重命名类(很可能还有构造函数),然后使用类似的东西扩展类

    class SforceEnterpriseClient extends renamedClass {};
    

    唯一的主要问题是,当类的新版本可用时会发生什么。

        3
  •  0
  •   Vincent Ramdhanie    16 年前

        4
  •  0
  •   NDM    16 年前

    也许在这种情况下你不需要扩展类。当你想添加新功能或更改现有功能并保持原始类不变时,你可以扩展一个类。通常这是该走的路。但是,如果你需要对现有类进行更改,然后更新对该类的所有引用以引用新类,为什么不简单地更改类代码本身呢?这样,引用就不必改变。

        5
  •  0
  •   Tom    16 年前

    factory pattern 。通常,您应该将类创建和业务逻辑分开。
    所以当你遇到这样的问题时,你只需要去更换工厂。..

    $sfEnterpriseClient = Factory::getSFEnterpriseClient($params);
    

    这样,您就可以避免业务逻辑中的“新”构造,并使代码更易于管理