【问题标题】:Storing PHP OPP classes存储 PHP OOP 类
【发布时间】:2013-02-13 01:03:41
【问题描述】:

我有一个使用库文件 lib.client.php 的站点,该库文件存储在我的标准网站根目录的 php 文件夹中,并包含我构建的一系列类。

库文件包含大约 5 个类,我应该将这个文件保留为一个,还是将这些类分解为自己的文件并单独包含它们?我应该为这些文件使用任何最佳实践命名约定吗?

(正如你所看到的,我现在使用的是 lib。我也使用了 inc。只是因为我以前见过它做过几次)。

更新:

我正在改造我的结构以符合 PSR-0 标准。我现在有:

  • CCall(供应商)
    • 核心
      • 连接
        • Gateway.php
        • GatewayDSN.php
        • GatewayException.php
    • 组件
      • Environment.php
      • EnvironmentRequest.php
      • Centre.php
      • 访问
        • 用户.php
        • UserSession.php
      • RenderException.php

我想在index.php中创建一个new Environment(),它的__construct方法调用Gateway::checkInstance()

  1. 如何管理此模型中的命名空间使用?什么会有自己的命名空间,我会在哪里定义它?
  2. 如何将自动加载与这些命名空间定义一起使用(以及在哪里?)
  3. 方法和属性命名是否有等效标准?

我正在使用这个https://gist.github.com/jwage/221634/download#

【问题讨论】:

    标签: php namespaces directory-structure


    【解决方案1】:

    将类分解为它们自己的文件并遵循 PSR-0 标准作为最佳实践。 http://phpmaster.com/autoloading-and-the-psr-0-standard/

    【讨论】:

    • 我已经根据 PSR-0 标准进行了一些更改,更新了我的问题,你能用 PSR-0 回答关于命名空间的问题吗?
    【解决方案2】:

    如果您使用的是 PSR-0 自动加载:

    在 Environment.php 中添加这个

    namespace Components;
    

    并添加对网关的引用

    use Core\Connection\Gateway;
    

    当然,你需要在 Gateway.php 中使用这一行

    namespace Core\Connection;
    

    然后:

    new Components\Environment();
    

    【讨论】:

    • 加载器会接受类似的输入吗? $classLoader = new SplClassLoader('CCall\Components\Environment', './lib/CCall/Components'); 用于环境等?
    • 是的,首先你需要注册“命名空间”。 require_once("SplClassLoader.php"); $loader = new SplClassLoader('CCall\', './lib/CCall''); $loader->register(); new Components\Environment();
    • 由于\' 出现语法错误,我该如何解决?
    • 也许是new SplClassLoader('CCall', '/lib/CCall'')。抱歉,我无法测试代码。
    • 那么这个类想要什么输入呢?它是指向包含类文件的文件夹和父命名空间的路径吗?又名加载环境文件new SplClassLoader('CCall\Component', '/lib/CCall/Component'')
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    • 2011-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    相关资源
    最近更新 更多