106 lines
4.4 KiB
Markdown
106 lines
4.4 KiB
Markdown
|
# Hello, World
|
|||
|
|
|||
|
Just about every framework ever written has some kind of hello world example included, so it'd be pretty rude of us to break this tradition!
|
|||
|
|
|||
|
We'll start out by creating a very very basic hello world, and then we'll expand it to follow MVC principles.
|
|||
|
|
|||
|
## Bare bones
|
|||
|
|
|||
|
First off we have to make a controller that Kohana can use to handle a request.
|
|||
|
|
|||
|
Create the file `application/classes/Controller/Hello.php` in your application folder and fill it out like so:
|
|||
|
|
|||
|
<?php defined('SYSPATH') OR die('No Direct Script Access');
|
|||
|
|
|||
|
Class Controller_Hello extends Controller
|
|||
|
{
|
|||
|
public function action_index()
|
|||
|
{
|
|||
|
echo 'hello, world!';
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
Lets see what's going on here:
|
|||
|
|
|||
|
`<?php defined('SYSPATH') OR die('No Direct Script Access');`
|
|||
|
: You should recognize the first tag as an opening php tag (if you don't you should probably [learn php](http://php.net)). What follows is a small check that makes sure that this file is being included by Kohana. It stops people from accessing files directly from the url.
|
|||
|
|
|||
|
`Class Controller_Hello extends Controller`
|
|||
|
: This line declares our controller, each controller class has to be prefixed with `Controller_` and an underscore delimited path to the folder the controller is in (see [Conventions and styles](about.conventions) for more info). Each controller should also extend the base `Controller` class which provides a standard structure for controllers.
|
|||
|
|
|||
|
|
|||
|
`public function action_index()`
|
|||
|
: This defines the "index" action of our controller. Kohana will attempt to call this action if the user hasn't specified an action. (See [Routes, URLs and Links](tutorials.urls))
|
|||
|
|
|||
|
`echo 'hello, world!';`
|
|||
|
: And this is the line which outputs the customary phrase!
|
|||
|
|
|||
|
Now if you open your browser and go to http://localhost/index.php/hello you should see something like:
|
|||
|
|
|||
|
![Hello, World!](hello_world_1.png "Hello, World!")
|
|||
|
|
|||
|
## That was good, but we can do better
|
|||
|
|
|||
|
What we did in the previous section was a good example of how easy it to create an *extremely* basic Kohana app. (In fact it's so basic, that you should never make it again!)
|
|||
|
|
|||
|
If you've ever heard anything about MVC you'll probably have realised that echoing content out in a controller is strictly against the principles of MVC.
|
|||
|
|
|||
|
The proper way to code with an MVC framework is to use _views_ to handle the presentation of your application, and allow the controller to do what it does best – control the flow of the request!
|
|||
|
|
|||
|
Lets change our original controller slightly:
|
|||
|
|
|||
|
<?php defined('SYSPATH') OR die('No Direct Script Access');
|
|||
|
|
|||
|
Class Controller_Hello extends Controller_Template
|
|||
|
{
|
|||
|
public $template = 'site';
|
|||
|
|
|||
|
public function action_index()
|
|||
|
{
|
|||
|
$this->template->message = 'hello, world!';
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
`extends Controller_Template`
|
|||
|
: We're now extending the template controller, it makes it more convenient to use views within our controller.
|
|||
|
|
|||
|
`public $template = 'site';`
|
|||
|
: The template controller needs to know what template you want to use. It'll automatically load the view defined in this variable and assign the view object to it.
|
|||
|
|
|||
|
`$this->template->message = 'hello, world!';`
|
|||
|
: `$this->template` is a reference to the view object for our site template. What we're doing here is assigning a variable called "message", with a value of "hello, world!" to the view.
|
|||
|
|
|||
|
Now lets try running our code...
|
|||
|
|
|||
|
![Hello, World!](hello_world_2_error.png "Hello, World!")
|
|||
|
|
|||
|
For some reason Kohana's thrown a wobbly and isn't showing our amazing message.
|
|||
|
|
|||
|
If we look at the error message we can see that the View library wasn't able to find our site template, probably because we haven't made it yet – *doh*!
|
|||
|
|
|||
|
Let's go and make the view file `application/views/site.php` for our message:
|
|||
|
|
|||
|
<html>
|
|||
|
<head>
|
|||
|
<title>We've got a message for you!</title>
|
|||
|
<style type="text/css">
|
|||
|
body {font-family: Georgia;}
|
|||
|
h1 {font-style: italic;}
|
|||
|
|
|||
|
</style>
|
|||
|
</head>
|
|||
|
<body>
|
|||
|
<h1><?php echo $message; ?></h1>
|
|||
|
<p>We just wanted to say it! :)</p>
|
|||
|
</body>
|
|||
|
</html>
|
|||
|
|
|||
|
If we refresh the page then we can see the fruits of our labour:
|
|||
|
|
|||
|
![hello, world! We just wanted to say it!](hello_world_2.png "hello, world! We just wanted to say it!")
|
|||
|
|
|||
|
## Stage 3 – Profit!
|
|||
|
|
|||
|
In this tutorial you've learnt how to create a controller and use a view to separate your logic from your display.
|
|||
|
|
|||
|
This is obviously a very basic introduction to working with Kohana and doesn't even scrape the potential you have when developing applications with it.
|