【问题标题】:Adding elements to other elements将元素添加到其他元素
【发布时间】:2011-03-24 06:46:51
【问题描述】:

过去几年我一直在使用 .net,我喜欢您可以从任何地方在页面的任何位置添加控件的方式。例如,你可以说Head.Controls.add(new LiteralControl("<link rel='stylesheet' type='text/css' href='styles.css' />")),即使已经有一个body。

在php中可以做这种事情吗?我的网站的设置是为了让我们有代理、客户和艺术家(这是为一家卡片制造公司准备的,该公司希望客户应用程序可以在展会上离线使用)。添加代理表单可能与添加客户表单具有不同的样式。因此,我希望将每种类型都放在不同的文件夹中(例如代理、客户和艺术家),每个类型都有自己的样式表。将有一个表单页面采用GET 类型参数(艺术家、客户等)、模式(创建、编辑)和可选的 ID 参数(在编辑模式下)。我希望能够一次调用$agentForm->generateForm()$agentForm->generateStyleTag(),而不是我目前正在做的事情是在正文中调用$agentForm->generateForm(),在头部调用$agentForm->generateStyleTag(甚至没有开始正文标签正在生成中)。

一个很好的表达方式是我有一个 Head 标签和一个 Body 标签。在另一个名为$agentForm->generateHTML() 的函数中,我想说Body->addChild("bla")Head->addChild("bla")。这使得开发新页面变得更加容易,因为它确保样式存在并且对于用户所在的网站部分是正确的。

是否有可能实现这一点,或者这是 php 和 .net 之间的主要区别之一?

【问题讨论】:

  • 我认为我的大部分问题实际上都没有正确答案,因此 40% 可能是正确的..
  • 然后发布您自己的解决方案并选择它作为正确答案。
  • 有时我找不到答案,继续前进并忘记它(或者试图找到解决方案会导致其他主要问题,然后我迷上了试图解决它,然后忘记它..)。如果我有时会走神,我会无能为力。

标签: php object parent-child addchild


【解决方案1】:

PHP 本质上只是为了将字符串扔到 STDOUT 中而设计的,除非是缓冲的。要完成这项工作,您必须使用支持此功能的模板系统,或者使用您自己的模板系统。没有 '内置' 模板系统,除非您将整个内容加载到 DOMDocument 或其他内容中,并进行主要的原始 DOM 操作,这会慢很多,我不会除非您打算进行大量其他 DOM 修改,否则不推荐。谷歌搜索 PHP 模板系统并检查哪一个支持您的需求。

【讨论】:

    【解决方案2】:

    你需要意识到一些事情。 .NET 是一个框架,而不是编程语言。该问题与Can you do this in C# 相同。意识到您是在将苹果与橙子进行比较。

    PHP 语言是图灵完备的,所以你可以做到。这并不意味着执行它的代码已经编写(可能是)或者它会很容易(谁知道)。这只是意味着它是可能的。

    话虽如此,你需要找到一个框架来做你想做的事。没有一种语言会伴随这种操作(因为它对整个语言的限制太大了)。所以你的任务不再是“PHP 可以做到这一点”,而是“我需要找到一个框架来做到这一点”。试着研究一下框架,我敢打赌你会很容易找到答案...

    【讨论】:

      【解决方案3】:

      看看PRADO 框架和Yii 框架。他们有一个分层的、基于组件的理念,允许嵌套和组合,本质上是用更小的、可插拔的组件构建一个完整的站点。

      【讨论】:

      • 我最近研究了普拉多,但我认为,目前,有一个考试要修改,还有 5 个项目要在考试后进行(更不用说找工作/找房子了)我可能有一个现在有点太多了,很快就无法学习一个新的框架。不过,我会确保在未来这样做。无论如何感谢您的建议。问候,理查德
      【解决方案4】:

      正如已经指出的,PHP 是一种语言,而 .Net 是一种框架。两者是非常不同的东西。

      如果你想使用 PHP 作为 .Net 的脚本语言,总是有Phalanger

      【讨论】:

        猜你喜欢
        • 2015-07-27
        • 2012-03-04
        • 2013-01-30
        • 2012-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多