首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将html与php注释类分离

将html与php注释类分离
EN

Stack Overflow用户
提问于 2015-09-04 21:00:56
回答 1查看 158关注 0票数 9

我使用php和MySQL为线程注释找到了这个类:

代码语言:javascript
运行
AI代码解释
复制
<?php
class Threaded_comments
{

public $parents  = array();
public $children = array();

/**
 * @param array $comments
 */ 
function __construct($comments)
{
    foreach ($comments as $comment)
    {
        if ($comment['parent_id'] === NULL)
        {
            $this->parents[$comment['id']][] = $comment;
        }
        else
        {
            $this->children[$comment['parent_id']][] = $comment;
        }
    }
}

/**
 * @param array $comment
 * @param int $depth
 */ 
private function format_comment($comment, $depth)
{
    for ($depth; $depth > 0; $depth--)
    {
        echo "\t";
    }

    echo $comment['text'];
    echo "\n";
}

/**
 * @param array $comment
 * @param int $depth
 */ 
private function print_parent($comment, $depth = 0)
{
    foreach ($comment as $c)
    {
        $this->format_comment($c, $depth);

        if (isset($this->children[$c['id']]))
        {
            $this->print_parent($this->children[$c['id']], $depth + 1);
        }
    }
}

public function print_comments()
{
    foreach ($this->parents as $c)
    {
        $this->print_parent($c);
    }
}

}

这个方法适用于这个数组:

代码语言:javascript
运行
AI代码解释
复制
$comment = array(  array('id'=>1, 'parent_id'=>NULL,   'text'=>'Parent'),  
                    array('id'=>2, 'parent_id'=>1,      'text'=>'Child'),  
                    array('id'=>3, 'parent_id'=>2,      'text'=>'Child Third level'),  
                    array('id'=>4, 'parent_id'=>NULL,   'text'=>'Second Parent'),  
                    array('id'=>5, 'parent_id'=>4,   'text'=>'Second Child')  
                );  

结果是:

代码语言:javascript
运行
AI代码解释
复制
$tc = new Threaded_comments($comment);
$tc->print_comments();

其结果是:

代码语言:javascript
运行
AI代码解释
复制
Parent
    Child
        Child Third level
Second Parent
    Second Child

这是正确的,但是对于违抗评论列表( html ),我需要将所有html代码添加到private function format_comment($comment, $depth)中。这不是一个好方法,我认为需要将htmlphp class分开。

编辑:(这是我的页面显示/打印线程注释)

代码语言:javascript
运行
AI代码解释
复制
function _comments_($id,$type){
    $DB_QUERY = mySqli::f("SELECT id,user,email,message,timestamp,parent_id,rfield_1,rfield_2,rfield_3,rfield_4,rfield_5 FROM " . NEWS_COMMENTS . " LEFT JOIN " . NEWS_REVIEWS . " ON " . NEWS_COMMENTS . ".id = " . NEWS_REVIEWS . ".cid WHERE 
    pid = ? AND type = ? AND approved = 1 ORDER BY timestamp DESC LIMIT 12", $id, $type);

        foreach($DB_QUERY as $row){
         $commentdata[] = $row;
        }
    return $commentdata;
}
$comments_list = _comments_('125','book');
foreach($comments_list as $row){
        $comments[] = array(
        'id' => $row['id'],
        'parent_id' => $row['parent_id'],
        'name' => $row['user'],
        'text' => $row['message'],
        'datetime' => $row['timestamp']
        );
        }

        $tc = new Threaded_comments($comments);
        $tc->print_comments();

在我的页面中,线程注释用format_comment显示并工作为true。如果我需要使用与php类不同的html来设计输出。

在这种情况下,我们如何将html代码从类中分离出来?!

EN

回答 1

Stack Overflow用户

发布于 2015-09-04 21:26:56

你是对的。

1)最简单的解决方案是将数组传递给模板。这个模板不包含逻辑,只包含html和php (例如,数组的前端)。

2)对于啤酒分离,使用模型-视图-控制器模式:

有了这层结构,每一层都有自己的责任。在模型和控制器中从不使用html。仅在模型中查询。

Laravel和CodeIgniter等框架实现了这种模式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32409664

复制
相关文章
ASP.NET可以在Windows Server 2008 R2 Server Core上运行
微软在上周举行的Windows硬件工程大会(Windows Hardware Engineering Conference,WinHEC)展示了Windows Server 2008 R2版,服务器操作系统的更新锁定虚拟化、管理、弹性,及网络等四个范畴.Server Core上新增对ASP.NET的支持.不过Windows Server 2008 R2只有64位版本了,如今64位的处理器不论在台式计算机或是服务器上都已成为业界标准,因此微软聚焦在64位处理器上;Windows Server 2008 R2将
张善友
2018/01/22
1.4K0
Windows Server 2008 R2 Server Core
在微软Windows Server 2008中开始提供一个全新的Server Core模式,它是一个最小限度的系统安装选项,只包括安全、TCP/IP、文件系统、RPC等服务器核心子系统。在Server Core我们可以安装所需的服务器角色和特征,并且仅有非常少的GUI,像我们常见的IE、OE等应用在Server Core中是没有的,在Server Core中我们可以安装的服务器角色也只有DNS、DHCP、文件服务、活动目录、ADLDS(轻型目录服务)、打印、媒体、Web这几种,而其他角色是不能安装的。Win
张善友
2018/01/30
2.3K0
Window Server 2008 R2系统备份
1、安装Backup 2、打开Backup工具 3、一次性备份 下一步
aehyok
2018/09/07
1.4K0
Window Server 2008 R2系统备份
SQL server 2008 r2 安装教程[通俗易懂]
1、下载sql server 2008 r2的安装包(如果需要安装包可以私我,密钥自动输入) 2、打开安装包,点击setup.exe
全栈程序员站长
2022/09/10
2.1K0
SQL server 2008 r2 安装教程[通俗易懂]
SQL server 2008 r2 安装图文详解
文末有官网下载地址、百度网盘下载地址和产品序列号以及密钥,中间需要用到密钥和序列号的可以到文末找
全栈程序员站长
2022/07/23
2.3K0
SQL server 2008 r2 安装图文详解
[Windwos]Windows Server 2008 R2 英文改中文
RT有时候小伙伴们使用的是国外的服务器,老外安装的Windows 都是英文的,这个时候你需要汉化(坑爹的老外)
用户2353021
2020/05/11
2.2K0
SQL server 2008 R2 突然无法启动
在SQL配置管理器中,查看MSSOLSERVER和SQLEXPRESS中都有个VIA的属性,将VIA设置为禁用,然后重启服务,就可以了,服务能正常启动。
红桃K
2019/12/26
1.5K0
在Windows 7/Server 2008 R2上部署asp.net 1.1程序
.NET 1.1只有32位的,Windows Server 2008 R2只有64位的,可以通过WOW64运行32位应用程序,按照How to install ASP.NET 1.1 with IIS7 on Vista and Windows 2008和Workaround: Running ASP.NET 1.1 on Vista SP2/WS08 SP2的配置并不能正常运行,通过下面的方法可以正常运行asp.net 1.1程序,本文主要参考Installing .Net 1.1 application
张善友
2018/01/19
1.5K0
在Windows 7/Server 2008 R2上部署asp.net 1.1程序
配置Windows 2008 R2 防火墙允许远程访问SQL Server 2008 R2
1.先修改 sql server 2008R2的端口号吧,1433经常成为别人入侵的端口,在sql server 配置管理器 --》sql server 网络配置--》MSSQLSERVER的协议,把里面的 TCP/IP --》属性  ip地址里面的端口号都改成2433,重启 sql server 服务(MSSQLSERVER) 2.运行firewall.cpl--打开防火墙--高级设置--入站规则--新建规则--选择程序--》位置C:\Program Files\Microsoft SQL Server\
张善友
2018/01/22
1.5K0
取消Windows Server 2008 R2密码过期提示
之前,我写过一篇文章“Windows server 2008 r2到Windows 7的改造之路”,下来Windows Server 2008 R2像Windows 7似的,一直用的很好,甚至说更好。
williamwong
2018/07/24
1.8K0
取消Windows Server 2008 R2密码过期提示
SQL Server 2008 R2 主数据服务
主数据服务(Master Data Services,MDS)既是一个概念又是一个产品,主数据服务的概念是对核心业务数据有一个集中的数据入口看守人,数据项如客户账单地址,雇员/客户姓名,以及产品名称应该集中管理,以便让所有消费应用系统都具有相同的信息。微软提供了一个示例,在customer表中记录了一个顾客地址,但在mailing表中记录了一个不同的地址。主数据服务应用程序可以保证所有表只有一个正确的地址,而一个MDS可以是一个本地应用程序,SQL Server 2008 R2包括一个应用程序和一个接口管理
张善友
2018/01/30
7970
SQL Server2008 R2新特性简介
SQL Server 2008的R2版本马上就要放出CTP了,其中最令人兴奋的就是R2中提供了主数据管理的功能,下面简单说一下R2中到底为我们带来了哪些新特性:
深蓝studyzy
2022/06/16
6880
Windows server 2008 R2 AD升级迁移到windows server 2019
> 因为公司现有生产环境还在使用windows server 2008 R2,考虑到版本太老和后续可能遇到的兼容性问题,再加上微软已经停止了对windows server 2008的支持,于是着手升级现有环境到windows server 2019。
孤鸿
2022/10/04
10.4K0
Windows server 2008 R2 AD升级迁移到windows server 2019
Windows 2008 R2 Server Core .NET环境配置
.NET Framework的部分功能在2008 R2 Server Core得到支持,包括:.NET 2/3/3.5的子集和ASP.NET。另外,PowerShell也在Server Core上可用。IIS7在Server Core上缺少的功能仅仅是本地的管理GUI,可以通过远程进行管理 。 安装好的Server Core支持以下角色: .NET Framework 2.0, 3.0, 和3.5 子集, 包括WCF, WF和LINQ PowerShell 2.0 通过WoW64 支持32位应用程序
张善友
2018/01/19
3.1K0
Windows 2008 R2 Server Core .NET环境配置
打造Window Server 2008 R2的工作站
Thinkpad X200 7458 CTO上安装Windows Server 2008 R2,windows Server 2008 R2安装过程非常简单,只要下一步就可以了,主要是驱动程序的安装和
张善友
2018/01/22
1.1K0
打造Window Server 2008 R2的工作站
SQL Server 2008 R2主数据服务安装
SQL Server 2008 R2的主数据服务(Master Data Services,简称MDS)已经放出,目前是CTP版本,微软提供了下载地址:
深蓝studyzy
2022/06/16
7860
SQL Server 2008 R2主数据服务安装
Windows Server 2008 R2 让IIS支持高并发
IIS的默认设置只能支持很小的访问量,访问量大了(比如每秒几千)就会不响应,可以通过下面的设置使IIS支持高并发访问
徐大嘴
2019/03/21
3.6K0
Windows Server 2008 R2 搭建微信小程序
注意哦~,Windows Server 2003不能部署微信小程序哦~,想要部署小程序请升级2008 R2及以上版本。 买在国内的云服,Windows 和 Linux系 系统价格一样,国外价格不一样(
赵腰静
2018/03/09
4.5K1
Windows Server 2008 R2 搭建微信小程序
SQL Server 2008 R2 详细安装图文教程
14、点击“对所有SQL Server 服务使用相同的账号”,浏览账户名,密码不设置则默认为没有密码,后点击下一步。
全栈程序员站长
2022/09/10
3K0
SQL Server 2008 R2 详细安装图文教程
Windows Server 2008 R2 Server Core 的 Microsoft .NET Framework 4安装程序
Windows Server 2008 R2 Server Core 版本的.NET  Framework 4.0可以用于构建ASP.NET, WCF, WF, Windows Services 和
张善友
2018/01/19
1.1K0

相似问题

在动态ngSrc请求中强制HTTP拦截器

45

创建假请求

12

具有动态值的弹簧休息拦截器

214

请求拦截器不处理$http请求。

10

AngularJS拦截器重试请求

29
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文