我正在学习PHP中的课程,他们的例子就像......
class table { //makes a table
private $tag ;
function Begin($border=0, $align="center", $width='100%', $cellpadding=2,
$cellspacing=2, $class='', $id='', $bgcolor='', $style='') {
$this->tag = '<table ' ;
if ($align) $this->tag .= 'align="' . $align . '" ' ;
if ($width) $this->tag .= 'width="' . $width . '" ' ;
if ($border > 0) $this->tag .= 'border="' . $border . '" ' ;
if ($cellpadding > 0) $this->tag .= 'cellpadding="' . $cellpadding . '" ' ;
if ($cellspacing > 0) $this->tag .= 'cellspacing="' . $cellspacing . '" ' ;
if ($class) $this->tag .= 'class="' . $class . '" ' ;
if ($id) $this->tag .= 'id="' . $id . '" ' ;
if ($bgcolor) $this->tag .= 'bgcolor="' . $bgcolor . '" ' ;
if ($style) $this->tag .= 'style="' . $style . '" ' ;
$this->tag .= ">" ;
return $this->tag ;
}
然后你只需实例化它并通过
创建一个表$table =new table;
$table->$table($border=2, $align='center', etc);
我应该像这样编码html,css在课堂上吗? 我觉得以这种方式制作表格和表格比实际只是打字更令人困惑。我应该只进行类似的验证,从数据库中获取数据,以及类中的逻辑内容吗?
我应该使用什么类而不是?
答案 0 :(得分:2)
你可以这样做......就个人而言,我不会。
使用domain objects的对象。举个例子,想象一下Facebook的源代码。我很确定在Facebook源代码的某个地方你会发现以下内容:
class Friend
{
// ...
}
...同样,用PHP编写,你会发现这样的东西:
class Question
{
var $originalPoster;
var $answers = array();
// ...
function close()
{
// ...
}
// ...
}
使用对象封装复杂的想法和概念。在SO上有很多与问题相关的信息,但你可以将这些信息封装在一个对象中。
答案 1 :(得分:2)
也许这会清理它。最好扩展类以封装整个表,并使用重载,这样你甚至不必跟踪任何事情。您真正需要关心的是使用有效的HTML表格属性进行HTML验证。实际上,如前所述,对象只是让您更容易概念化您想要做什么以及如何组织您的想法。
使用以下解决方案,您不需要像对待html验证一样关注对象构造和默认值。在使用html表元素参数数组构建它之后(如果你愿意),你也可以在之后用参数重载对象。您还可以轻松添加行。完全未经测试但过度简化...
Class My_table { private $table_def = array(); public $rows = array(); function __construct($attributes_array) { if (is_array($attributes_array)) { foreach ($attributes_array as $key => $val) { $this->__set($key, $val); } } } function __set($attribute, $value) { $this->table_def[$attribute] = $value; } function draw() { // write table opening tag echo "<table"; foreach($table_def as $key => $val) { echo " $key='$val'"; } echo ">"; // write all rows out foreach($rows as $current_row) { echo "<tr>"; foreach($current_row as $field_name => $field) { echo "<td>$field</td>"; } echo "</tr>"; ) // finish table echo "</table>"; } } $table = new My_table(array( "style" => "boarder: solid thin gray;", "width" => "100px" )); $table->height = "200px"; $table->rows[] = array("name" => "someone", "email" => "a@a.com") $table->draw();
答案 2 :(得分:1)
对象可以表示您希望它们的任何,但它主要取决于您正在制作的应用程序类型。以HTML <table>
的类为例,如果您的PHP软件并不太关心HTML,那么为HTML元素创建PHP类没有多大意义。
考虑一下你的申请。涉及哪些对象?例如,给定单作者博客,可以有帖子,评论,类别和标签。您希望拥有的相应课程自然是Post
,Comment
,Category
和Tag
。
希望这有意义(这里有点晚了......)。