如何使用接口进行松散耦合?
我似乎没有掌握接口将如何实现松散耦合的概念?您可能会发现这个问题是其他一些问题的重复,但是我读了许多与此主题相关的答案,但我没有找到令人满意的解释. 下面是有多少开发人员实现松散耦合的示例. interface shape { public function sayName(); } class Circle implements shape { public function sayName(){ echo 'Hello my name is circle'; } } class Square implements shape { public function sayName(){ echo 'Hello my name is square'; } } class Creator { public $shape = null; public fu
0 2023-05-31
编程技术问答社区
如何更好地解耦我的数据层并限制我的单元测试的范围?
我要掌握单元测试和学习如何将代码分解为可测试的位,但是我不清楚的一件事是如何编写"高级"代码,例如我的控制器操作,以便测试控制器不需要通过实际的数据层(我的测试套件中的其他位置进行了独立测试). 例如 - 我有一个用户验证,该验证会采用用户名/密码并验证其帐户并返回登录成功/失败: class Api_AuthController extends Zend_Controller_Action { public function validateUserAction() { // extract, clean and validate $username from POSTed data // extract, clean and validate $password from POSTed data // access the data layer $accountMapper = new Application_Model_Mapp
0 2023-05-31
编程技术问答社区
用AJAX、MVC实现OOP的PHP?
我是OOP范式(和Ajax/jQuery)的新手,但想创建一个具有AJAX功能的MVC架构的基本站点,并具有Ajax功能.我简要介绍了我当前如何"理解"体系结构的图表. 大概是当使用AJAX时,它充当了直接与模型交互以检索需要任何功能的控制器?我添加的文件名只是为了让您了解我"认为"应该包括在内.例如index.php将是html/css模板,其中包括在相关位置(无论它们是什么) - news.php,navigation.php等.数据库/pager.php.我为分页而创建或连接/查询我正在努力查看控制器组件的数据库 - 它肯定会成为"第二个后端视图" - 调用从模型发送的类视图? 我可能在这里很好地解决了我的混乱 - 在视图,控制器和模型中应该怎么做... Ajax功能在技术上是另一个控制器吗?与我上面类似的任何图表都非常有帮助. 解决方案 好的,因此Ajax是一种传输方法,而不是诸如模型或控制器之类的应用程序. 您的客户将通过 ajax与一个或多个控制器进
0 2023-05-31
编程技术问答社区
MVC | 用户输入验证:控制器、模型或两者兼备
我知道这样的问题已经在Stackoverflow上被问到了各个时期,但是即使阅读了这些问题,我仍然感到困惑.我想清楚地知道应该通过示例演示一个问题来处理形式验证的位置. 假设我的网站上有一个表格,其中有人填写并随后提交.该模型希望控制器正确传递该值,以便内部处理该值.该模型通过函数getInput接收输入,该输入设置以下规则: 输入必须是字符串类型. 输入必须超过0,少于或等于100个字符. 输入必须匹配电子邮件地址的模式. 我想如果这些条件中的任何一个都不满足,我应该在getInput中抛出一个例外;毕竟,控制器传递了一个不匹配模型设定的规则的值. 除了上述规则外,控制器(至少我可以确定这适用于控制器)还必须验证是否首先设置了输入值,然后脚本使用其他三个规则进行. 现在我的问题是:以下哪个(4)规则将由控制器验证,哪个规则是由模型验证的?显然,控制器知道模型的要求,以便可以适应该模型(如果没有,则可能面临抛出例外的后果).另一方面,拥有几个控制器似乎是多余
2 2023-05-31
编程技术问答社区
ZF + Doctrine 2 : 重型模型类或轻型模型+服务层?
我正在整合 zend框架和学说2 ,我发现了服务层. 现在我明白了(我错了吗?),我有2个架构: a 模型,其中类包含域逻辑,即属性 + getters/setters +复杂方法 A 轻量级模型,其中类包含属性 + getters/setter和a 服务层层,包含域逻辑,并修改模型类 每个人的优点是什么? 通过将域逻辑放在模型的外部,我似乎很奇怪,所以我不明白为什么使用服务层. 解决方案 是什么让您认为您的服务层是模型的外部?不是.实际上,这是您的模型的核心部分,以及实体,存储库等. . 如果您使用的是Doctine2,则需要一个服务层.原因之一是您不希望您的实体了解实体管理员(损害可检验性).另一个是您也不希望控制器驱动EM(这不是知道持久性的控制器工作). 我通常使用一个架构,其中服务层是控制器的接口.服务层暴露在实体上操作的功能(将其作为参数或返回它们,或两者兼而有之).实体的持久性被服务层隐藏.服务类驱动EM和存储库本身,或将其委派给
0 2023-05-31
编程技术问答社区
寻找与Java EE架构相当的解决方案的PHP开发人员
我是PHP开发人员,我阅读了有关Java EE Technologies的信息,我想用PHP和所有随之而来的(MySQL,Apache ...)实现此类技术(N-Tier,EJB,JPA ...). 解决方案 不要. PHP不是Java.像您写的Java代码一样编写PHP代码是 silly 和适得其反.这很可能使未来的代码维护者想要伤害您. 需要坚持一个对象吗? 使用orm . 需要多层体系结构?如果您以适当的疑虑设计代码,那么您已经在那里达到了9/10的路. ejbs?每次我阅读Wikipedia文章时,它们的描述都不同.可重复使用的组件?具有标准化的界面,分布式应用程序和数据持久性?是的,但这不是PHP. orms和a 底线:对于绝大多数PHP脚本,您将不需要任何"企业技术应用程序,或者您选择了错误的平台. 首先选择 PHP框架,并从那里构建您的应用程序.如果您来自Java,那么Zend Framework似乎是最不外国的. Kohana,Sym
0 2023-05-30
编程技术问答社区
将域实体的可变属性作为一个值对象来存储可以吗?
我的用户某些部分我希望能够更改和传递,并且某些部分应该保持恒定. 例如,我永远不想更改我的用户ID,但是电子邮件或密码之类的内容可能会经常更改,并且也可以被用户之外的其他对象使用. 一个实例是创建用户性.由于没有ID不能存在用户性,因此我的控制器可以创建一个将用户数据标准化用户属性属性的对象.映射器在DB中创建实体后,它将创建一个新的用户性,并传递构造函数中的ID和USERDATA对象. 当用户需要电子邮件或密码之类的信息时,它可以查看其UserData. 看起来更便携,但是这过于杀伤吗?有更好的解决方案吗? 注意 我认为这可能很好的原因:可变字段的值需要标准化……有时这些字段需要在实体本身之外传递.例如,在创建实体之前.通过创建一个可以通过周围传递的值对象,我们提供了一个标准化的位置,可以从任何地方分配这些值,以及可以在实体之外传递的东西. 通过"标准化",我的意思是我的信息必须统一,无论其存在何处.例如,email需要始终是n长度,并且以有效
0 2023-05-30
编程技术问答社区
如何在PHP中实现多层次的架构
我已经确定了以下层要在我的应用程序中实现.据我所知 演示层 业务层 数据访问层 服务层 我选择了Symfony2作为应用程序中使用的框架. SYMFONY2具有内置的MVC架构.上面的层如下. 演示层=>控制器和视图 业务层,服务层=>模型 数据访问层=>也模型,但使用了学说. 模型由业务层,数据访问层,服务层组成.请参阅下图,即 我的问题是, 有没有办法将模型解散为单独的业务层,数据访问层,服务层?如何在PHP中实现多层体系结构?我应该使用其他一些框架(如果仅支持分层体系结构)? 更新 下面的链接很有帮助 如何在MVC中构建模型? 如何使用PHP构建N层的Web体系结构? 在MVC和3层或N层体系结构中开发网站有什么区别? MVC应用程序.多层体系结构如何适合? 在MVC架构中实现服务层/p> 使用Symfony PHP实现3层体系结构> 解决方案 如果您很认真地尝试进行MVC启发的东西,那么
0 2023-05-30
编程技术问答社区
将 Doctrine 用于 PHP 的优势?
刚刚遇到学说具有对象关系映射器和DB抽象层的项目.学说提供的其他PHP抽象层没有?除了通过用教义查询语言编写的查询获取对象外,您还可以将ORM放置在哪些实际用途?查询语言真的是您要开发整个Web应用程序的东西吗?表现良好吗? 总的来说,在学说上构建应用程序是否会更容易维护和理解?它是否过度设计,并且在小型项目中明智的抽象层上建造吗? ( 解决方案 什么学说提供了其他PHP抽象层不得? 实现datamapper模式而不是activerecord. 支持注释 yaml for模式. 使用 dql . 使用PHP 5.3+. 的好处 很快并且有庞大的社区. 除了ORM还有ODM. 查询语言真的是您想在? 中开发整个Web应用程序的东西 仅负责维护业务对象的申请的一部分应意识到学说的存在.而且该部分不必是100%基于学说的. 总的来说,在学说上构建应用程序是否可以更容易维护和理解? 肯定.该代码易于阅读,理解和维护. 它是过度设计的吗?对于
0 2023-05-30
编程技术问答社区
用php创建像twitter或convore那样的提法
你好,我只是好奇.关于他们如何做事.我认为他们做这样的事情 @someone1 im stacking on stackoverflow RT @someone2 : hello guys what are you doing? 在以自己的方式进行此操作之前,我想告诉您有关我的数据库方案 // CID = COMMENT ID, BID = BLOG ID, UID = USER ID CID BID UID COMMENT 1 1 1 @someone1 im stacking on stackoverflow RT @someone2 : .... 2 1 4 @someone1 im stacking on stackoverflow RT @someone2 : .... 3 1 12 @someone1 im stacking on stackoverflo
0 2023-05-30
编程技术问答社区
在Web开发中,MVC架构的替代方案有哪些?
可能的重复: MVC的替代品 我已经四处寻找替代方案只是为了查看可用的东西,但我几乎找不到任何东西. 我在许多文章中读到,由于某些技术原因,我无法真正掌握Web MVC从来都不是真正的MVC.有时建议寻找其他东西,但是Elses是什么,其他架构类型是什么?我在哪里可以阅读更多有关它的信息?有人可以提供有关那里可用的信息的更多详细信息吗? 顺便说一句,我已经阅读了三层体系结构,我认为这是非常相似的,除非另有证明. 还有什么? 解决方案 Larry Garfield的博客文章(已经有点旧)是我对此主题了解的最好的内容: http://wwwww.garfieldtech.com/blog/blog/mvc-vc-vs-vs-pac 其他解决方案 对不起,没有任何容易的消化比较.但是例如 model-view-view-presenter 取代MVC的模式,实际上,实际上更接近大多数PHP框架. http://c2.com/cgi/wiki/wi
0 2023-05-30
编程技术问答社区
MVC的目录结构
我正在尝试清理我一直在研究的框架.目前,该网站由以下目录组成: Models Views Controllers Helpers (Miscellaneous functions) Libraries (Universal classes, like library and session management) Images Style 任何时候都调用页面,路由器脚本查找关联的控制器,因此thesite.com/login将在'/controllers/login.php'我面临的问题上实例化login_controller就像一种类型的控制器一样,就像View.php一样,它处理要通过适当视图来处理的格式化数据.但是这些不像页面控制器,因为它们控制了MVC本身.我仍然对这种体系结构有些陌生,我很好奇拥有更多经验的人如何组织这个. 我可以将路由器分类并将控制器视为库,还是最好创建一个名为"页面"或任何其他想法的子目机/内部/控制器?非常感谢. 解决方案 我建议遵
0 2023-05-30
编程技术问答社区
Mysql的VIEWS与PHP的查询
我正在研究一个Web应用程序,该应用程序涉及在"乔必须访问地点"等各个列表中创建餐馆列表.现在,对于每个餐厅和清单,我都在网站上显示 计算餐厅的受欢迎程度 列表的受欢迎程度 中存在餐厅的清单数量 目前,我正在使用PHP中的MySQL语句为此,但计划切换到MySQL视图,并在PHP中进行简单的选择语句... 我的问题是, 在php中使用sql查询的视图? 解决方案 使用视图添加了抽象级别:您以后可以更改表的结构,并且您不必更改显示有关列表信息的代码,因为您仍将查询视图(不过,视图定义可能会更改). 主要区别在于,每次插入后都会更新视图,因此每当查询视图时,数据就可以"准备就绪",而使用自定义查询的视图每次都会有MySQL计算所有内容(当然,当然有一些缓存) . 最重要的是,如果您的列表的更新比查看的列表少,则您会看到使用视图的性能. 其他解决方案 我的完整答案将取决于几件事(从您的应用程序的角度来看): 您是否计划允许用户创建和共享此
0 2023-05-30
编程技术问答社区
XML有什么用,我应该在什么时候使用它?
我很好奇,我一直在开发功能强大的网站/网络应用程序,而且我从未学会过XML,甚至我从未真正感到需要的ODDER.这不像卷发或准备好的陈述,在知道他们做了什么以及他们的工作方式之前,我感到"必须更简单地做到这一点!"或"必须为此设计一些东西!". 目前,我与MySQL和Json一起工作,我没有这种感觉"我需要学习"(XML),这一定是错误的! 我真的很想听听XML的一些引人注目的论点,并了解比JSON或MySQL(或Web Dev的其他方面)可以做的事情,以及我应该使用它! 解决方案 JSON非常轻巧,使其更适合将数据传递到前端. XML具有描述性标签,这些标签(我个人发现)使以原始格式阅读更易于阅读. 如果我想从程序中加载任何类型的设置文件,我将以XML文件格式使用它. 无论如何,这就是我的想法,但是我敢肯定,选择另一个是更多的深入理由.我的经验不足以列出:) 但是,我确实找到了一些提出一些好处的网站. debate (评论中的一些好处)
0 2023-05-30
编程技术问答社区
XML有什么用,我应该在什么时候使用它?
我很好奇,我一直在开发功能强大的网站/网络应用程序,而且我从未学会过XML,甚至我从未真正感到需要的ODDER.这不像卷发或准备好的陈述,在知道他们做了什么以及他们的工作方式之前,我感到"必须更简单地做到这一点!"或"必须为此设计一些东西!". 目前,我与MySQL和Json一起工作,我没有这种感觉"我需要学习"(XML),这一定是错误的! 我真的很想听听XML的一些引人注目的论点,并了解比JSON或MySQL(或Web Dev的其他方面)可以做的事情,以及我应该使用它! 解决方案 JSON非常轻巧,使其更适合将数据传递到前端. XML具有描述性标签,这些标签(我个人发现)使以原始格式阅读更易于阅读. 如果我想从程序中加载任何类型的设置文件,我将以XML文件格式使用它. 无论如何,这就是我的想法,但是我敢肯定,选择另一个是更多的深入理由.我的经验不足以列出:) 但是,我确实找到了一些提出一些好处的网站. debate (评论中的一些好处)
0 2023-05-30
编程技术问答社区
成就/徽章系统
我一直在浏览此站点以获取答案,但是我仍然不确定如何在其数据库结构和实现中计划类似的系统. 在PHP和MySQL中,很明显,在这样的情况下,请立即获得某些成就(在采取专业措施时:填写所有个人资料字段),尽管我知道更新并在一定时间后分配了徽章.由于如此多的用户和徽章,这不会造成性能问题(就规模而言:用户和徽章的数量很高). 因此,我认为数据库结构将像: 一样简单 Badges | Badges_User | User ---------------------------------------------- bd_id | bd_id | user_id bd_name | user_id | etc bd_desc | assigned(bool) | | assigned_at | 但是,正如某些人所说的那样
2 2023-05-30
编程技术问答社区
服务定位器,让我们在ZF2背景下思考这个问题。
根据Marco的Pivetta思想, this href =" https://stackoverflow.com/questions/22795459/is-servicelocator-anti-pattern">旧问题 我对的回答 我正在询问自己在Zend Framework 2应用程序中使用我们的服务的更好方法. 实际上我们可以将ServiceLocatorAwareInterface与ServiceLocatorAwareTrait组合在一起. 事实是我看到如何构建我们的服务的唯一方法是: 不要在您的服务中使用ServiceLocator,请使用DepplyancyIndext. 问题是: 某些项目太大了,您要么拥有: 15个工作流的服务课程. 服务的课程具有15个依赖项. 选择您的噩梦... 您在服务中可能需要的东西的一个示例: 恢复FormManager(您无法在控制器中调用) 您可能需要让您的ViewRenderer渲
0 2023-05-28
编程技术问答社区
PHP中的插件架构
我正计划研究如何在PHP中实现插入式体系结构.我已经尝试搜索网络以获取可能的参考,但是我认为,如果我在这里询问,我对良好参考的搜索可能会更快,更相关. 这里是否有人尝试过使用插件架构进行Web项目? 谢谢 Erwin 解决方案 我已经编写了WordPress插件,并且他们所依赖的魔法是"可变函数名称".例如,这是有效的PHP,其中函数调用phpinfo()将被调用: $func_name="phpinfo"; $func_name(); 这使开发人员可以"挂钩"函数调用,就像在没有更改其余应用程序的情况下用自己的功能覆盖它们. Linux内核模块都是关于"挂钩"的,没有这种行为,它们将无法使用. 不幸的是,对于PHP变量函数名称是一种令人恶心的黑客,它消耗了大量资源.名称空间中的所有功能都放在列表中,并且必须在调用该函数之前搜索此列表,这是O(log2(n)).还请记住,尽管代码仍将转换为有效的C ++,但可变函数名称无法正确加速.一种更好的方法是重新
0 2023-05-28
编程技术问答社区
PHP设置器/获取器和构造器
我一直在网上搜索这个,但是我似乎找不到足够清楚的东西可以理解的东西.我在Java中看到了有关此问题的"类似"问题. class animal{ private $name; // traditional setters and getters public function setName($name){ $this->name = $name; } public function getName(){ return $this->name; } // animal constructors function __construct(){ // some code here } // vs function __construct($name){ $this->name = $name; echo $this
0 2023-05-27
编程技术问答社区
在Zend Framework中何时使用模块?
设置新的ZF项目时,我通常具有此目录结构: 申请 模块 默认 控制器 表格 查看 模型 管理员 控制器 表格 查看 模型 语言 共享 模型 图书馆 公共 我仅在布局不同时仅使用模块,或者使用不同的数据库,当然,当它是一种非常特殊的情况时,例如管理员 - 兼容或论坛/董事会.然后,我有针对应用程序不同部分的控制器.例如JobController,ProductController等. 我的一位同事向我展示了他的基本布局.它几乎相同,但他使用了很多模块.像工作模块一样,产品模块每个模块中的每个模块都有2个控制器一个indexController和adminController. 他的设置工作并没有错,但我从未见过这种方法,它似乎并不需要. 所以结束: 您何时使用模块以及何时坚持 控制器? 决定模块或不决定模块的规则? 您的观点是我同事设置的缺点和优点 视图? 在您的角度,我的设置的缺点和优点是什么?
0 2023-05-27
编程技术问答社区