问下php require 的问题

下面这个代码是我学习 mvc 的时候看到的 示例程序
不太明白为何 要 使用 defined('ROOT_PATH')


<?php
/**
+----------------------------------------------------------
* 小恺教你写一个属于自己的MVC框架之程序初始化文件
+----------------------------------------------------------
* 文 件 名  Init.php
+----------------------------------------------------------
* 作    者  xiaokai
+----------------------------------------------------------
* 时    间  2009-08-17
+----------------------------------------------------------
*/
header("Content-type:text/html;charset=utf-8");            //设置字符集


!defined('ROOT_PATH') && define('ROOT_PATH', str_replace('\\', '/', dirname(__FILE__)));
//这句是判断如果没有定义 ROOT_PATH 常量, 那么就定义常量, 相当于
//if(!defined('ROOT_PATH'))
//{
//    define('ROOT_PATH', str_replace('\\', '/', dirname(__FILE__)));
//    定义常量, __FILE__是什么不知道到的看手册,  dirname获得不包含文件名的路径
//  然后将路径中的 \ 替换为 /
//  比如我现在的路径就是 E:/Web Server/www/Demo/
//}


require ROOT_PATH  . '/Core/Config.php';            //引入配置文件


require ROOT_PATH . '/Core/Controller.class.php';        //引入控制器类文件


require ROOT_PATH . '/Core/View.class.php';                //视图类文件


require ROOT_PATH . '/Core/Model.class.php';            //模型类文件







直接 按照下面这样 require 不行么,作者为何要 那样写呢?
require  '/Core/Config.php';            //引入配置文件
require  '/Core/Controller.class.php';        //引入控制器类文件
require  '/Core/View.class.php';                //视图类文件
require  '/Core/Model.class.php';            //模型类文件






还有我发现 这个php 文件没有 ?> 标记,这个是怎么回事? php 不需要么?

作者: foxidea   发布时间: 2011-10-08

1.加上常量是为了让项目的移植性性更好一点
2.如果一个页面里全是php代码可以不用闭合。

<?php
echo 'aaaaaaaaaa';//就不用闭合

作者: 白老师   发布时间: 2011-10-08