Codeigniter 4基础教程(1)-- Wamp+CodeIgniter 4以及helloworld

前言: Codeigniter 是PHP语言上比较普遍的MVC框架(不懂MVC的请出门左转,那里有教程)。相对而言比较简单,效率较高(一般认为仅次于Phalcon),市场占有率比较高(一般认为仅次于laravel)。缺点是Codeigniter更新不够快,新的内容不够多,比如,csrf等内容就曾经长期没有获得更新。

0.WAMP
注意:codeigniter 4.0.3 需要至少PHP 7.2+的平台。这里选择Wamp安装包。具体安装请参考其他教程。安装后的效果如下
在这里插入图片描述
1.安装Codeigniter 4 + visual studio code
与laravel等需要composer的不同,codeigniter 相对比较简单,下载到www即可。
在这里插入图片描述
首先,修改文件夹名称,我修改为ci403
在这里插入图片描述
打开浏览器,输入http://localhost/ci403/public/,效果如下
在这里插入图片描述
这里其实是访问http://localhost/ci403/public/index.php,而其他othercontroller以及对应的方法othermethod的参数otherparam访问都是
http://localhost/ci403/public/index.php/othercontroller/othermothod/otherparam
还有composer进行安装的方法,这里略过。
安装visual studio code(略)。
打开ci403的文件夹,内容如下。
在这里插入图片描述
现阶段不需要关注其结构,只需要知道url路径找的public的内容即可
1+.另一种启动方式
app/config/App.php有如下语句

	public $baseURL = 'http://localhost:8080/';

打开ci403的目录,命令行输入php spark serve
然后进入localhost:8080即可。这里略过。

2.修改base_url

	public $baseURL = 'http://localhost/ci403/public/';

备注:路由默认的启动程序相关的都在app/Routers.php中,比如


$routes->setDefaultNamespace('App\Controllers');
$routes->setDefaultController('Home');
$routes->setDefaultMethod('index');
$routes->setTranslateURIDashes(false);
$routes->set404Override();
$routes->setAutoRoute(true);

$routes->get('/', 'Home::index');
//$routes->get('/site', 'Home::site');

这里的uri的写法是index.php/site去映射Home控制器的sitefunction。

3.helloworld的非正规创建
这里指明了默认的HomeController以及默认的方法。因此,我们基于这一点创建helloworld程序。修改app/Controllers/Home.php如下

<?php namespace App\Controllers;

class Home extends BaseController
{
    
    
	public function index()
	{
    
    
		echo '<h1>Hello Codeigniter 4.0.3<h1>';
	}
}

效果如下:
在这里插入图片描述
进一步修改app/config/Routers.php

$routes->get('/', 'Home::hello');

修改app/Controllers/Home.php

<?php namespace App\Controllers;

class Home extends BaseController
{
    
    
	public function index()
	{
    
    
		// return view('welcome_message');
		echo '<h1>Hello Codeigniter 4.0.3<h1>';
	}

	//--------------------------------------------------------------------
	public function hello()
	{
    
    
		echo '<h1>Hello codeigniter 4-0-3<h1>';
	}
}

在这里插入图片描述
创建一个新的默认Controller,修改app/Config/Routers.php


$routes->setDefaultNamespace('App\Controllers');
$routes->setDefaultController('MyHome');
$routes->setDefaultMethod('index');
$routes->setTranslateURIDashes(false);
$routes->set404Override();
$routes->setAutoRoute(true);


$routes->get('/', 'MyHome::index');

然后,创建app/Controllers/MyHome.php

扫描二维码关注公众号,回复: 12422295 查看本文章
<?php namespace App\Controllers;

class MyHome extends BaseController
{
    
    
	public function index()
	{
    
    
		// return view('welcome_message');
		echo '<h1>Hello My NEW HOME Codeigniter 4.0.3<h1>';
	}

	//--------------------------------------------------------------------
	public function hello(string $name)
	{
    
    
		echo '<h1>Hello codeigniter 4-0-3 from <h1>'.$name;
	}
}

效果如下:
在这里插入图片描述
3+通过url输入参数给方法
以及手动访问MyHome的hello方法,同时传进去一个参数you。
http://localhost/ci403/public/index.php/MyHome/hello/you
在这里插入图片描述
4.Hellworld的正规创建(通过view)
app/Controllers/MyHome.php

<?php namespace App\Controllers;

class MyHome extends BaseController
{
    
    
	public function index()
	{
    
    
		// return view('welcome_message');
		// echo '<h1>Hello My NEW HOME Codeigniter 4.0.3<h1>';
		return view('myhello');
	}

	//--------------------------------------------------------------------
	public function hello(string $name)
	{
    
    
		echo '<h1>Hello codeigniter 4-0-3 from <h1>'.$name;
	}
}

app/Views/myhello.php

<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
</head>
<body>
	My Hello world
</body>
</html>

效果如下
在这里插入图片描述
5.controller传递参数给view
app/views/myhello.php

<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
</head>
<body>
My Hello world from 
	<?php echo var_dump($data);?>

</body>
</html>

app/Controllers/MyHome.php

<?php namespace App\Controllers;

class MyHome extends BaseController
{
    
    
	public function index()
	{
    
    
		$mydata['data'] = [1,2,3];
		return view('myhello',$mydata);
	}
	public function hello(string $name='yyyy')
	{
    
    
		$myname['data'] = array(
			'one'=>'2',
			'two'=>$name,
		);
		return view('myhello',$myname);
	}
}

效果如下:
在这里插入图片描述
最后,给一个url传递数据的例子
http://localhost/ci403/public/index.php/MyHome/hello/zzzz
在这里插入图片描述
再补充一个小的写法, 使用到了compact函数来把多个独立的变量进行打包发送。

<?php namespace App\Controllers;

class MyHome extends BaseController
{
    
    
	public function index()
	{
    
    
		$mydata['data'] = [1,2,3];
		return view('myhello',$mydata);
	}
	public function hello(string $name='yyyy')
	{
    
    
		$myname['data'] = array(
			'one'=>'2',
			'two'=>$name,
		);
		return view('myhello',$myname);
	}
	
	public function hello()
	{
    
    
		$name='yy';
		$email = '[email protected]';
		$age = 30;
		return view('myhello',compact($name, $email, $age));
	}
}

齐活。

猜你喜欢

转载自blog.csdn.net/yaoguoxing/article/details/106581903