【问题标题】:What's the best way to organize files?组织文件的最佳方式是什么?
【发布时间】:2012-06-30 09:36:34
【问题描述】:

我正在学习...我已经阅读了http://www.w3schools.com 上的教程,我已经阅读了 www.php.net 上的手册,并且对一切工作原理有了很好的理解。但是我对如何构建我的页面感到困惑。哪些内容应该放在同一个页面上,哪些内容应该有自己的页面并且只包含/需要?

我仍然需要阅读的一件事是参数化,所以不要在这方面打败我......但是。

这是我所拥有的:

a.php 这是用户在输入 www.mydomain.com/a.php 时看到的页面

<html>
<body>

<?php require("b.php"); ?>
// this requires that the page gets b.php and puts it here

<p>Name: <?php echo $row['firstname']; ?></p>
<p>Last Name: <?php echo $row['lastname']; ?></p>

</body>
</html>

b.php 此页面包含/需要在 a.php 中

<?php

require("../dbunamepword.php");
// this connects to my database

$query = ("SELECT * FROM contacts WHERE contacttype IN ('Buyer','Seller','Buyer / Seller','Investor') AND leadstatus = 'New' ORDER BY date DESC"); 
$result = $mysqli->query($query) or die ("Error: ".mysqli_error($mysqli));
while ($row = $result->fetch_array()) {
// this fetches the data I want from the table in my db while all cases match above

$firstname = $row ['firstname'];     
$lastname = $row['lastname'];
// these are the rows in the table I want to fetch 

echo "First Name: " . $firstname . " " .$lastname ."<br />";
// this is how I want the data presented

}
?>

这是我的问题提前谢谢你:

1) 在构建这些页面时,使用函数对我有什么好处,或者对我没有好处?

2) 我不能省略 b.php 上的 echo 并像下面那样调用 a.php 中的行并放入 foreach 语句吗?我实际上对此进行了测试,但一直收到意外的 $end 错误,所以我不确定这是不是一个好方法还是我做错了什么?

<html>
<body>

<?php require("b.php"); ?>
// this requires that the page gets b.php and puts it here

<p>Name: <?php echo $firstname; ?></p>
<p>Last Name: <?php echo $lastname; ?></p>

</body>
</html>

3) 假设我添加了一些类似下面的 if/else 语句,我应该将它们放在 b.php 中还是将它们放在它们自己的文件 c.php 中,然后在 b.php 中添加一个包含?

if(isset($_GET['leadstatus']) && $_GET['leadstatus'] == "All")
{
$query = "SELECT * FROM contacts WHERE contacttype IN ('Buyer','Seller','Buyer / Seller','Investor') ORDER BY contacts.date DESC";  
}
elseif (in_array($_GET['leadstatus'], array('New', 'Hot', 'Warm', 'Cold', 'Rejected', 'Closed')))
{  
$status = $_GET['leadstatus'];   
$query = "SELECT * FROM contacts WHERE leadstatus = '".$status."' AND contacttype IN ('Buyer','Seller','Buyer / Seller','Investor') ORDER BY contacts.date DESC";
}

4) 在我的$query 中,我有SELECT * FROM contacts WHERE contacttype IN ('Buyer','Seller','Buyer / Seller','Investor'),而不是在每个 if/else 语句中输入它,或者假设我需要添加另一个字段,例如“Renter”,我可以这样做:

$type = ('Buyer','Seller','Buyer / Seller','Investor')

$query = ("SELECT * FROM contacts WHERE contacttype = $type AND leadstatus = 'New' ORDER BY date DESC"); 


if (($_GET['date'] == 'today'))
{     
$$query = "SELECT * FROM contacts WHERE contacttype = $type AND date = DATE(NOW()) ORDER BY date DESC";
}

if (($_GET['date'] == 'thisweek'))
{     
$thisweek = date('Y-m-d', strtotime('last sunday'));
$query = "SELECT * FROM contacts WHERE contacttype = $type AND date BETWEEN '$thisweek' AND '$thisweek' + INTERVAL 7 DAY ORDER BY date DESC";
}

【问题讨论】:

  • 这不是一个合适的问题,以目前的形式。从常见问题解答中,我引用:您的问题应该有合理的范围。如果你能想象一整本书都能回答你的问题,那你就问得太多了。
  • @mario 和 @gview 建议我从哪里开始,因为 w3schools.com 和 php.net 上的教程不符合标准?
  • 一般来说,既然你问了,你的方法很快就会变成意大利面。 PHP 让这很容易发生,所以这不是对你的能力的打击,但任何基本能力和可维护性的 Web 应用程序都采用 MVC 设计模式的一些变体。虽然将您的标记和逻辑混合在一起很简单,但您不应该这样做。有一些非常简单/对新手友好的框架,例如 CakePHP 或 Codeignitor,它们将为您提供结构和 MVC 实现。我建议你看看这些项目。
  • 谢谢,你能解释一下标记和逻辑的区别吗?
  • 在网络应用程序中,您有“演示文稿”,即所有 html/javascript/css 等,并且您拥有应用程序的逻辑。您正在走在脚本中将它们混合在一起的道路上。所有的 MVC 都将它们分解为多个部分,并为您提供结构和范式,以帮助您将这些东西分开。

标签: php mysqli


【解决方案1】:

我建议您开始使用微框架来帮助您组织代码。我更喜欢Silex,因为它促进/鼓励良好的编程习惯/实践,并且随着项目的增长,您可以无缝地发展到Symfony 的更全栈世界。

您并不需要框架,但我相信它们可以帮助您学习组织任何代码库的最佳实践,即使您决定不将其用于某些项目。

【讨论】:

  • 虽然我个人使用 symfony2,但我认为期待一个完全是 php 和 web 编程新手的人能够涉足 silex 或 symf2 是一种延伸。出于这个原因,我建议更简单/更容易地启动和运行 mvc。
猜你喜欢
  • 2017-08-30
  • 1970-01-01
  • 2013-12-03
  • 1970-01-01
  • 1970-01-01
  • 2013-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多