2012-04-10 45 views
1

我试图围绕PHP OOP和阅读所有内容后,我可以充分理解它是如何工作的,但在投入太多时间学习改变我的内联,程序习惯之前,我想确保它它甚至可以完成我所需要的或如果我的方式偏离轨道。使用Javascript的PHP OOP

我有一个PHP/MySQL网站开始作为一个副项目,但正在快速增长,我正在努力确保我的技能能够跟上。该网站有用户和公司。用户方面是相当静态的,我能够处理与我的新手PHP技能显示内容的细微变化。在公司方面,我试图使它对于他们喜欢的公司非常可定制,但我很快意识到我有一个问题,因为现在每个公司有50页的代码被修改,然后根据公司希望的内容转储到文件夹中在他们的网站上。所以每当一家公司加入时,我将以前的公司文件复制到我的网站根目录中的新文件夹中,并为他们定制了一大堆东西。我已经在大部分页面中放入了一些函数来将页面数减少到20个左右,但是我的问题是,OOP能够将我带回家,直到我只维护一个站点,并且是OOP的目的?我有类似javascript的东西(如下所示),根据客户在他们的网格系统中想要的而改变。有人可以帮我把我的头围绕在我应该学习在这里做的基础上吗?我应该学习如何让每个页面成为一个大对象,并将下面的JavaScript包含在该对象中,或者只是针对PHP的OOP,并且每当客户进入或至少有几页代码以新文件夹结尾时限制可以定制的内容吗?我不害怕去学习新的东西,只是想确保我走在正确的轨道上,而且我所处的这个洞越来越快,所以时间很短。感谢您对此概念的任何帮助。我觉得有我就是缺少一些基本的了解...

var mygrid;   
      function doInitGrid(){ 
      mygrid = new dhtmlXGridObject('gridbox'); 
      var combo=mygrid.getCombo(4); 
      combo.put(2, 'Approve/Deny'); 
      combo.put(1, 'Approve'); 
      combo.put(0, 'Deny'); 
      mygrid.setImagePath("../codebase/imgs/");   
      mygrid.setHeader("Submit Date, Manufacturer, Product Category, Progress, Approval Status",null,["text-align:center;","text-align:center;","text-align:center","text-align:center","text-align:center"]);   
      <!--mygrid.attachHeader("#text_filter,#text_filter,#text_filter");--> 
      mygrid.setInitWidthsP("10,16,44,18,12"); 
      mygrid.setColAlign("center,left,left,center,center"); 
      mygrid.enableAutoWidth(false); 
      mygrid.setColTypes("ro,ro,ro,button,coro"); 
      mygrid.setColSorting("str,str,str,str,str,str"); 
      mygrid.enableRowsHover(true,'grid_hover');    
      mygrid.setSkin("modern"); 
      mygrid.init();   
      mygrid.setStyle("font-size:11px;","font-size:11px;","font-size:11px","font-size:11px","font-size:11px"); 
      mygrid.loadXML("connector.php?hospid=<?php echo $hospid; ?>"); 
      mygrid.setColumnIds("date,man_name,group,approval_progress, approval_status");   
      var dp = new dataProcessor ("connector.php?hospid=<?php echo $hospid; ?>");  
      dp.init(mygrid);       
      dhxWins = new dhtmlXWindows(); 
      dhxWins.setImagePath("../codebase/imgs/");   
      mygrid.attachEvent("onRowSelect", function(id,ind){ 
       if (ind == 0 || ind == 1 || ind == 2 || ind == 3){ 
       dhxWins = new dhtmlXWindows(); 
       var w1 = dhxWins.createWindow("w1", 60, 60,925, 575); 
       dhxWins.setSkin("dhx_web"); 
       dhxWins.setImagePath("../codebase/imgs/"); 
       w1.centerOnScreen(); 
       w1.setText(""); 
       w1.setModal(false); 
       theVar11 = (id); 
       w1.attachURL("pop_details.php?var1=" +theVar11); 
       return true; 
       }; 
       }); 
+5

尝试用较少的和恰当的词语来说出你的问题 – 2012-04-10 07:21:26

+0

哦,懒得读这么多! – dfsq 2012-04-10 07:43:57

+0

我很抱歉,罗嗦的问题。我刚刚读完了几个小时,感觉没有接近解决方案。所以对于这个项目的未来来说非常重要,我觉得我真的需要提出正确的问题。非常感谢反馈。我只是想知道我是否正确或不正确。将考虑所有的意见。 – 2012-04-10 13:22:12

回答

2

我要说的是OOP可以非常方便在这里!

首先,你想让所有的HTML页面与你的PHP页面分开。减少自己的混乱。

其次,我的PHP创建了一个具有主要配置文件功能的父类。这对您后来的工作很有帮助,因为您可以将一些参数传递给您的班级,以便更新用户个人资料的所有相关信息。

当你像一个大型网站一样工作时,它会使你作为开发人员的工作更容易跟随MVC系统或创建自己的系统。

举个例子,以你的情况,你profile.php页面创建一个名为Profile.class.php

class Profile 
{ 
    public function __construct() {} 

    public function updateUser($user) 
    { 
     // run code to update 1 user here 
    } 
} 

文件

你可以像

$obj = new Profile(); 

if ($_GET['update']) { 
    $obj->updateUser($_SESSION['user']); 
} 

这就是你如何能够受益于面向对象的方法。

选择是你的。

+0

给你检查小代码片段。我感谢帮助和反馈。我在这里完全迷路了。 – 2012-04-10 13:23:39

3

我试着阅读你的问题(ahhh,墙壁文字!没有空行,没有项目符号,没有总结!),从我的理解来看,你最大的问题似乎不是PHP和OOP,而是项目管理。

您正在尝试管理50家公司的项目,他们都需要一些不同的东西,并且您在代码重用/复制粘贴代码和更新所有代码时遇到问题。

的解决办法是两部分:第一个部分,大多数人会建议你使用源代码版本系统,如Git,SVN或CVS。这将允许您对代码进行版本控制,创建分支并合并它们。更新旧代码更容易。

您的代码重用的第二个解决方案确实是OOP。您需要决定哪些功能是常见的,应该放在单独的(可重复使用的)模块中,哪些功能特定于公司,并且不会重复使用。一旦它被重用,将代码分离到一个模块中。

这可能有助于您认为您不是为自己或公司编写代码,而是为其他需要使用代码的开发人员编写代码。分离代码并记录API。

+0

+1。万分感谢。真的感到沮丧,感到失落。我很欣赏这些反馈。 – 2012-04-10 13:23:00

+0

我们都去过那里。第一个项目比以往任何时候都做得更大,以及旧有的习惯不再有效。时间改变,学习的时间。在那里我们有StackOverflow:] – Konerak 2012-04-10 13:25:30