namespace-organisation
全部标签 我有一些旧类(class)想过渡到PSR-0样式目录。我想对我的流程进行健全性检查。将现有的FooPerson.class.php文件重命名并重新定位到Foo/Person.php。在Person.php中创建namespaceFoo,并根据需要更新所有类引用以兼容命名空间。为了与旧代码兼容,使用以下内容创建一个新的FooPerson.class.php:我希望这将启用使用newFooPerson或new\Foo\Person的透明实例化。初步测试似乎支持这一点。有没有我应该注意的陷阱? 最佳答案 我没有看到任何陷阱。但是,我建议使
所以我创建了这两个类//Quarter.phpnamespaceResources;classQuarter{...}//Epoch.phpnamespaceResources;classEpoch{publicstaticfunctioninitFromType($value,$type){$class="Quarter";returnnew$class($value,$type);}}现在这是两者的一个非常简化的版本,但足以说明我的问题。此处显示的类将不起作用,因为它找不到Quarter类。为了让它工作,我可以将$class变量更改为$class="\Resources\Quart
有一个tonofexistingquestions关于PHP的simpleXML和使用namespace处理XML。我看过的所有问题都做出了一个基本假设:代码预先知道传入的SOAP请求中将包含哪些namespace。就我而言,我在SOAP请求中看到了不一致的命名空间。具体来说,我一直致力于实现一个网络服务来与QuickbooksWebConnector对话(pdf)和我见过的一些示例请求如下所示:usernamepassword...有些看起来像这样:usernamepassword...或者这个:usernamepassword我理解使用xpath()来选择元素,但这假设您知道要查找
我在PDT2.2中使用Eclipse3.6(Helios),在尝试“使用”命名空间时出现语法错误。我能做些什么来解决这个问题吗?例子:useTables\Exceptions\ExceptionasException;PHP解析器将“Tables”识别为该行和其他类似行的语法错误。 最佳答案 这可能与您在Eclipse中的解释器设置有关。转到项目菜单并选择属性。显示属性屏幕后,您可以转到PHP解释器并在项目级别或工作区级别调整PHP版本。将PHP版本设置为5.3或更高版本以正确突出显示。如果您的项目使用的是PHP5.2,那么您将无法
以前我只使用第三方库,这些库将命名空间与ZendFramework2一起使用。现在我需要使用alibrary不使用命名空间,我似乎无法让它工作。我通过Composer安装它,并且它安装在vendor目录中。我正在尝试按如下方式使用它:$obj=new\SEOstats();结果是一个fatalerror,表示找不到该类。我曾尝试手动配置StandardAutoloader,但到目前为止还没有成功。我以为通过Composer安装时会自动为我完成自动加载,但我想如果没有namespace,情况并非如此?我没有在Composer生成的自动加载文件中看到任何对库的引用。我想我必须手动完成-但怎
当使用PHPnamespaces时,您是否像这样使用它们:\Foo\Bar->method()或Foo\Bar->method()请注意,区别仅在于前导斜杠。或者两者都有效,但含义不同?谢谢。 最佳答案 前导\的用法就像文件系统中的绝对路径和相对路径。最好用代码解释:namespacetest;$dt=newDateTime();失败,因为我们使用的是相对路径(没有前导\)和当前命名空间test。并且在这个虚构的命名空间中没有类DateTime。namespacetest;$dt=new\DateTime();在我们使用绝对name
我正在使用PHP,我想知道将大量函数组合到一个类中是多么糟糕的做法。我知道这不是类的目的,但我这样做的原因是提供一个namespace。在执行PHP脚本时启动假设10个类而不是假设2或3个类会产生多大影响? 最佳答案 如果你使用的php版本(从thephpmanual复制)我会说它在某种程度上是一个类的函数-功能分组。这不会有任何与性能相关的问题(您可以执行数百万次而您甚至不会注意到-应该没有运行时成本,只有一分钟的额外解析成本,这是可以忽略不计的)。现代php框架引入大量代码并在内部创建大量对象——我不会担心php性能,数据库性能
我只是想知道是否有一种方法可以使用“use”关键字使一个类的行为就像它在全局命名空间中一样,这样这个类就只能从类的外部表现得像命名空间的类。像这样的东西:namespacewherever\somewhere\deep\deep\inside;use\;//rootnamespace..note:thisdoesn'tworkclassstuff{//....}有人吗? 最佳答案 使用全局命名空间不会按您预期的方式工作。默认情况下,您可以通过添加反斜杠来引用全局命名空间类——例如$x=new\PDO(...);。尝试使用\不会改变这
当尝试克隆DOMNode对象(DOMNode::cloneNode)时,我在不同环境中运行它时遇到不一致,特别是当我打印nodeName属性时克隆无法复制namespace,例如$cloneNode=$origNode->cloneNode(true);echo("oldnodename=".$origNode->nodeName);echo("newnodename=".$cloneNode->nodeName);结果(本地-mac操作系统)“旧节点名称=命名空间:你好”“新节点名称=命名空间:你好”结果(本地-centos):“旧节点名称=命名空间:你好”“新节点名称=你好”在对节
我正在尝试将DoctrineMigrations设置为独立程序,但遇到了一些麻烦。我在同一文件夹中有doctrine-migrations.phar和migrations.yml。migrations.yml包含以下内容:name:DoctrineSandboxMigrationsmigrations_namespace:DoctrineMigrationstable_name:doctrine_migration_versionsmigrations_directory:/home/myusername/myproject/Database/Update在/home/myuserna