我们在前面的教程里面介绍了Jsnpp框架的目录结构以及调试模式,这一篇我们将来完成一个最简单的程序,向屏幕输出“Hello World!”。
通过这个简单的例子,我们将初步了解Jsnpp框架控制器的使用。
我们在《Jsnpp框架的目录结构》一文里面介绍了控制器文件是放在“app”目录下面的“controller”目录里面的,在您获得框架源码的时候,默认地在“controller”目录里面有一个“Index.php”文件,这个文件就是一个控制器文件。
如果您需要增加更多的控制器,那么可以在“controller”目录里面增加新的PHP文件,要注意的是:控制器文件的文件名第一个字母要大写。例如默认的“Index.php”文件,您不要写成“index.php”。
在编写一些小型程序的时候,我们只需要“Index.php”这个控制器文件就可以了,因为我们的地址可以映射到这个控制器的方法。在这个简单的例子里面,我们只需要一个控制器文件,就是默认的这个“Index.php”。
我们打开“Index.php”控制器文件,在这个文件里面默认地有一些代码,如下:
namespace app\controller;
use jsnpp\Controller;
class Index extends Controller
{
public function index()
{
$this->view->assign('webroot', $this->route->rootUrl())->display();
}
}
上面的代码是使用MVC方式来编写的示例代码,具体的前端页面代码在视图文件里面,现在我们不管这些,因为在这篇教程里面我们需要输出的仅仅是一个字符串,也就是“Hello World!”这行文字。
我们对上面的默认代码进行一些修改,修改后如下:
namespace app\controller;
use jsnpp\Controller;
class Index extends Controller
{
public function index()
{
return 'Hello World!';
}
}
您可以比较上下两处代码,他们的区别仅仅是在控制器类“Index”的方法“index”里面的代码,前一段代码是一条语句:
$this->view->assign('webroot', $this->route->rootUrl())->display();
后一段代码把上面的语句替换成了:
return 'Hello World!';
替换完成后,您可以刷新浏览器看一下,是否已经在浏览器里面输出了“Hello World!”字样。
下面,我们来解释一下这些代码。
先看第一行,第一行代码是“namespace app\controller;”,这是定义了这个控制器的名称空间,名称空间的定义这里是文件的路径。
第二行代码“use jsnpp\Controller;”,在这里我们引用了Jsnpp框架的控制器超类“Controller”,这样我们才可以在后面的代码里面让“Index”类继承“Controller”超类。
第三行代码“class Index extends Controller”,这里定义了一个名为“Index”的控制器类,并且这个控制器类是继承自“Controller”超类的。
再接下去的代码“public function index()”,这是控制器类“Index”的一个方法,这个方法是“index”,注意:方法的第一个字母不需要大写,只需小写。
最后就是方法“index”里面的执行代码“return 'Hello World!';”,通过这行代码就可以在浏览器输出文字了。您还可以变更单引号内的文字,看看输出的情况。
这一篇我们通过一个简单的例子来说明了一个控制器类应该包含哪些基本的代码。这个例子里面我们只有一个控制器,控制器类里面也只有一个方法,实际编程中,您可以根据需要编写更多的控制器,或者在控制器类中编写更多的方法。