Ci3_0_2学习手册文档的例子

1.控制器

什么是控制器?
简而言之,一个控制器就是一个类文件,
是以一种能够和 URI 关联在一起的方式来命名的。

考虑下面的 URI:
项目名/index.php/blog/
上例中,CodeIgniter 将会尝试查询一个名为 Blog.php 的控制器并加载它。
当控制器的名称和 URI 的第一段匹配上时,它将会被加载。

在这里插入图片描述
在这里插入图片描述

<?php

/**
文件名必须是大写字母开头,如:'Blog.php' 。
另外,一定要确保你的控制器继承了父控制器类,这样它才能使用父类的方法。
 **/
class Bob extends CI_Controller
{
    /**
     * 上例中,方法名为 index() 。"index" 方法总是在 URI 的 第二段 为空时被调用。 另一种显示 "Hello World" 消息的方法是:
    example.com/index.php/blog/index/
     */
    public function index()
    {
        echo 'hello world';
    }

    public function comments()
    {
        echo 'look at this';
    }


}

在这里插入图片描述
在这里插入图片描述

<?php

/**
文件名必须是大写字母开头,如:'Blog.php' 。
另外,一定要确保你的控制器继承了父控制器类,这样它才能使用父类的方法。
 **/
class Bob extends CI_Controller
{
    /**
     * 上例中,方法名为 index() 。"index" 方法总是在 URI 的 第二段 为空时被调用。 另一种显示 "Hello World" 消息的方法是:
    example.com/index.php/blog/index/
     */
    public function index()
    {
        echo 'hello world';
    }

    public function comments()
    {
        echo 'look at this';
    }


}

(3)通过 URI 分段向你的方法传递参数

<?php

/**
文件名必须是大写字母开头,如:'Blog.php' 。
另外,一定要确保你的控制器继承了父控制器类,这样它才能使用父类的方法。
 **/
class Bob extends CI_Controller
{
    /**
     *
     * 上例中,方法名为 index() 。"index" 方法总是在 URI 的 第二段 为空时被调用。 另一种显示 "Hello World" 消息的方法是:
       项目名/index.php/blog/index/
     */
    //http://127.0.0.1:8081/CodeIgniter-3.0.2/index.php/bob/index
    public function index()
    {
        echo 'hello world';
    }
        //http://127.0.0.1:8081/CodeIgniter-3.0.2/index.php/bob/comments
    public function comments()
    {
        echo 'look at this';
    }
    //http://127.0.0.1:8081/CodeIgniter-3.0.2/index.php/bob/shoes/vans/12 输出vans 12
    //通过 URI 分段向你的方法传递参数
    //如果你的 URI 多于两个段,多余的段将作为参数传递到你的方法中。
    //如果你使用了 URI 路由 ,传递到你的方法的参数将是路由后的参数。
    public  function shoes($scandal,$id)
    {
        echo $scandal;
        echo '<br/>';
        echo $id;
    }

}

(4)定义默认控制器

在这里插入图片描述

(5)重映射方法

正如上文所说,URI 的第二段通常决定控制器的哪个方法被调用。CodeIgniter 允许你使用 _remap() 方法来重写该规则:

public function _remap()
{
    // Some code here...
}
如果你的控制包含一个 _remap() 方法,
那么无论 URI 中包含什么参数时都会调用该方法。 
它允许你定义你自己的路由规则,
重写默认的使用 URI 中的分段来决定调用哪个方法这种行为。

public function _remap($method)
{
    if ($method === 'some_method')
    {
        $this->$method();
    }
    else
    {
        $this->default_method();
    }
}

(6)输出

    /**
     *CodeIgniter 有一个输出类,它可以自动的将最终数据
     发送到你的浏览器。 更多信息可以阅读 视图 和 输出类 页面。
     但是,有时候, 你
     * 可能希望对最终的数据进行某种方式的后处理,然后你自己手
     * 工发送到浏览器。CodeIgniter 允许你向你的控制器中添加一个
     * _output() 方法,该方法可以接受最终的输出数据。

    如果你的控制器含有一个 _output() 方法,输出类将会调用该
    方法来显示数据, 而不是直接显示数据。该方法的第一个参数
    包含了最终输出的数据。
     * 请注意,当数据传到 _output() 方法时,数据已经是最终
     * 状态。这时基准测试和计算内存占用都已经完成,
     * 缓存文件也已经写到文件(如果你开启缓存的话),HTTP 
     * 头也已经发送(如果用到了该 特性)。
     * 为了使你的控制器能正确处理缓存,_output() 可以这样写:
     * @param $output
     */
    public function _output($output)
    {
       // echo $output;
        if ($this->output->cache_expiration > 0)
        {
            $this->output->_write_cache($output);
        }
    }

(7)私有方法

    /**
     * 私有方法
    有时候你可能希望某些方法不能被公开访问,要实现这点,只要简单的将方法声明为 private 或 protected ,
     * 这样这个方法就不能被 URL 访问到了。例如,如果你有一个下面这个方法:
    使用下面的 URL 尝试访问它,你会发现是无法访问的:
    项目名/index.php/bob/_utility/
    注解
    为了向后兼容原有的功能,在方法名前加上一个下划线前缀也可以让该方法无法访问。
     */

    private function _utility()
    {
        // some code
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用GD32F470系列微控制器的硬件I2C接口来进行I2C通信。以下是一个简单的例子代码,展示了如何初始化和使用硬件I2C。 首先,需要包含相应的头文件和定义一些常量: ```c #include "gd32f4xx.h" #define I2C_SCL_PIN GPIO_PIN_6 #define I2C_SDA_PIN GPIO_PIN_7 #define I2C_GPIO_PORT GPIOB #define I2C_GPIO_CLK RCU_GPIOB #define I2C_GPIO_AF GPIO_AF_I2C1 #define I2C_SPEED 100000 // I2C速度设置为100KHz I2C_InitPara i2c_init_struct; ``` 然后,在`main`函数中进行初始化和配置: ```c int main(void) { // 使能I2C时钟 rcu_periph_clock_enable(RCU_I2C1); // 配置I2C引脚 gpio_init(I2C_GPIO_PORT, GPIO_MODE_AF_OD, GPIO_OSPEED_50MHZ, I2C_SCL_PIN | I2C_SDA_PIN); gpio_af_set(I2C_GPIO_PORT, I2C_GPIO_AF, I2C_SCL_PIN | I2C_SDA_PIN); gpio_output_options_set(I2C_GPIO_PORT, GPIO_OTYPE_OD, GPIO_OSPEED_50MHZ, I2C_SCL_PIN | I2C_SDA_PIN); // 配置I2C参数 i2c_deinit(I2C1); i2c_init_struct.mode = I2C_MODE_I2C; i2c_init_struct.duty_cycle = I2C_DUTYCYCLE_2; i2c_init_struct.own_address = 0x00; i2c_init_struct.general_call = I2C_GENERALCALL_DISABLE; i2c_init_struct.addressing_mode = I2C_ADDRESSINGMODE_7BIT; i2c_init_struct.dual_address_mode = I2C_DUALADDRESS_DISABLE; i2c_init_struct.own_address2 = 0x00; i2c_init_struct.general_call2 = I2C_GENERALCALL_DISABLE; i2c_init_struct.timing = 0x00201D2B; // 根据I2C速度设置调整此参数 i2c_init(I2C1, &i2c_init_struct); // 使能I2C i2c_enable(I2C1); while (1) { // 在此处编写你的代码 } } ``` 在初始化完成后,你可以在`while`循环中编写你的I2C通信代码。例如,如果你要向从设备写入数据,可以使用以下代码: ```c uint8_t data[] = {0x01, 0x02, 0x03}; i2c_master_transmit(I2C1, slave_address, data, sizeof(data), I2C_FLAG_WRITE); ``` 如果你要从从设备读取数据,可以使用以下代码: ```c uint8_t data[4]; i2c_master_receive(I2C1, slave_address, data, sizeof(data), I2C_FLAG_READ); ``` 注意,`slave_address`是从设备的地址。 这只是一个简单的示例代码,你可以根据你的具体需求进行更多的配置和操作。请参考GD32F4xx系列微控制器的官方文档和相应的库函数手册获取更多信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值