草庐IT

php - 面向过程编程的设计模式和封装?

我正在处理一个以过程式风格编写的相当大的PHP项目(它是在PHP5之前编写的),我忍不住觉得我正在做的一些事情有点“hackish”。“其他地方的修改很容易破坏应用程序。我见过的所有设计模式和最佳实践似乎都只适用于OOP。我可以开始使用PHP5的OOP功能编写我的一些代码,但我不确定是否所有其他开发人员都足够熟悉OOP。对于更熟悉OOP的人来说,这只是过程式编程的本质吗?是否有“最佳实践”书籍介绍如何保持大型过程应用程序的可维护性并降低引入新错误的可能性?我知道我可以以程序化的方式应用OOP设计原则/模式,但如果我要这样做,我还不如使用PHP的OOP功能。也许我对程序范式还不够了解?

php - 面向对象设计 : Return Values or Set Property?

在这种情况下,什么将被视为“最佳实践”。我有一个正在收集远程资源的类,它看起来有点像这样:classGather{publicfunctiongetAll($locations){$results=array('All','My','Results');return$results;}}我的问题是,返回结果或将它们分配为属性是否被视为最佳做法?即。//This$results=$gatherer->getAll();//vsThis$gatherer->getAll();//now$gatherer->resultscanbeused这很可能是我想多了,但我没有接受过正规培训,我想知道

PHP 面向对象 : Create a new class?

我有3个表:users:idfirst_namelast_namecourses:idnamestudent_courses:idstudent_idcourse_idpaidUsers记录用户,courses记录类(class),student_courses是显示哪些学生注册了哪些类(class)的表。我目前有一个“用户”类和一个“类(class)”类。我的问题是:我是否应该创建一个StudentCourses类来处理student_courses表的交互?即:我需要创建一个函数来获取用户已注册的所有类(class),将它们标记为已付费等。是否最好这样做:$student=newU

PHP 面向对象 : Unique method per argument type?

我正在编写一个小的自制ORM(学术兴趣)。我正在尝试将TDD概念作为一项培训练习,并且作为该练习的一部分,我在开发类(class)时为API编写文档。恰当的例子-我正在研究经典的“getCollection”类型映射器类。我希望它能够为特定用户检索AssetsX的集合(比方说博客文章),以及基于任意数值数组的集合。所以-你可能有像其中任何一个这样的方法$User=$UserMapper->load(1);$ArticleCollection=$ArticleMapper->getCollection(range(10,20));$ArticleCollection=$ArticleMa

PHP面向对象问题

我只是在寻找一些建议,目前我的数据库设计是一个用户有很多博客帖子。现在我有一个用户类和一个博客类。但是我不确定获取该用户所有博客文章的正确方法。我是在返回博客对象的用户类中创建一个getAllBlogs()函数,还是创建一个可以按用户搜索的主要博客类,所以它是getAllBlogsForUser($id)谢谢:-) 最佳答案 我个人会使用后面的选项。这是因为博客类知道如何处理博客表。我不想在用户类中编写特定于博客的数据库代码。另一方面,您仍然可以添加User::getAllBlogs()作为Blog::getAllBlogsForU

php - 帮助理解面向对象编程 OOP

我一直在几个网站上阅读有关OOP的内容并查看(所以我发现很难找到任何显示完整OOPPHP应用程序的体面示例。他们给出了使用汽车的示例,但它没有引起共鸣有朝一日将其投入实际使用,我表示赞同。谁能告诉我一个可以在真实网站场景中使用的OOP的完整示例。我知道我可能要求很多,但这确实有帮助。或者某处是否有图表显示方法、类、对象、构造函数等之间的真实关系。我知道解释起来并不简单,但希望能尝试一下。提前致谢 最佳答案 如果您将“汽车”更改为网络上更熟悉的东西会怎么样?$post=newBlogPost();$post->setTitle($_P

php - PHP5面向对象获取大量数据的正确方法

幸运的是,我知道如何从数据库中获取数据,这不是问题。对于我的面向对象的应用程序,我会有一个包含用户/人员的表。我还有一个person类。案例:我想向最终用户显示一个包含所有人的列表。显示此操作的正确方法是什么?在这种情况下使用mysql_fetch_object()php将创建它自己的类型对象,不是我自己的类型person从数据库中获取所有行,然后为每行创建一个对象?或者有其他更好的方法吗?能否请您也展示一些(伪)代码?谢谢 最佳答案 mysql_fetch_object()函数接受第二个参数,即要使用的类名:$myPerson=m

PHP [面向对象] : Memory allocation for Inheritance

请看下面的代码:classA{publicx=5;publicy=6;publicz=7;}classBextendsA{publicm=1;publicn=2;}$a=newA();$b=newB()从上面的代码可以看出,$a正在分配x内存量,而$b正在分配y内存量;现在我的问题是下面哪一个是正确的?x>yx 最佳答案 这些是我的数字:Startingallocation62480AllocatedmemoryfornewA()328AllocatedmemoryfornewB()496因此x这两个类定义是等价的classBext

php - 将函数的结果分配给 PHP 类中的变量?面向对象的怪异

我知道您可以将函数的返回值分配给变量并使用它,如下所示:functionstandardModel(){return"HiggsBoson";}$nextBigThing=standardModel();echo$nextBigThing;所以有人请告诉我为什么以下不起作用?或者它还没有实现?我错过了什么吗?classstandardModel{privatefunctionnextBigThing(){return"HiggsBoson";}public$nextBigThing=$this->nextBigThing();}$standardModel=newstandardMod

php - 对理解面向对象的 PHP 有一点帮助

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:PHPmethodchaining?我是PHP和OOP的新手,我无法理解数据库代码中出现的重复结构。我了解如何创建一个类、实例化它以及访问属性和方法,但是$myobject->function()对我来说现在已经是最复杂的了。这是什么结构?$myobject->function()->something。我越来越多地看到这种情况,尤其是当我开始全神贯注于mysqlPDO查询时。例如:$query->function1($arg)->function2($arg)->function3($arg);这里发生了什