백엔드 개발 PHP 튜토리얼 [CI]CodeIgniter 신속한 개발 가이드

[CI]CodeIgniter 신속한 개발 가이드

Aug 08, 2016 am 09:30 AM
gt model this user where

---------------------------------- --- ---------------------------------- --- --------

CI를 사용한 후 가장 강한 느낌은 철저한 MVC 설계입니다. 예를 들어 application/modesl 디렉토리에서 모델 작업을 작성하고 CI_Model을 균일하게 상속합니다.

반면 컨트롤러에는 로직만 작성되어 있고 데이터베이스를 직접 구동할 수는 없습니다. 모델을 직접 호출하려면 데이터가 필요하며 최종적으로 템플릿이 호출됩니다.

모델, 컨트롤러, 뷰 간의 협업은 아래와 같습니다.

<span>/*</span><span>*
 * 用户模型, 完整CURD示例
 * @Chenwei
 </span><span>*/</span>
<span>class</span> User_model <span>extends</span><span> CI_model<br>{
    </span><span>public</span> <span>function</span><span> __construct()
    {
        parent</span>::<span>__constrcut();
    }

    </span><span>/*</span><span>*
     * 查询用户信息, 这里不建议使用单一id参数作为条件, 为了便于控制器自己组装条件复用此模型方法
     * @param array 格式如: $where = array('id'=>1);
     * @return array
     </span><span>*/</span>
    <span>public</span> <span>function</span> userInfo(<span>$where = array()</span><span>)
    {
        </span><span>if</span>(<span>$where</span> && <span>is_array</span>(<span>$where</span><span>))
        {
            </span><span>$res</span> = <span>$this</span>->db->select('id, username, age')->where(<span>$where</span>)->get('users'<span>);

            </span><span>return</span> <span>$res</span>->result_array(); <span>//</span><span>以二维数组形式返回结果</span>
<span>        }
        </span><span>else</span><span>
        {<br>       $res = $this->db->select('id, username, age')->get('users');<br>
            </span><span>return</span> <span>$res->result_array()</span><span>;
        }
    }

    </span><span>/*</span><span>*
     * 添加用户
     * @param array 格式如: $data = array('username'=>'Chenwei', 'age'=>'18');
     * @reteurn bool
     </span><span>*/</span>
    <span>public</span> <span>function</span> userAdd(<span>$data</span><span>)
    {
        </span><span>if</span>(<span>$data</span> && <span>is_array</span>(<span>$data</span><span>))
        {
            </span><span>$bool</span> = <span>$this</span>->db->insert('users', <span>$data</span><span>);

            </span><span>return</span> <span>$bool</span><span>;
        }
        </span><span>else</span><span>
        {
            </span><span>return</span> <span>false</span><span>;
        }
    }

    </span><span>/*</span><span>*
     * 删除用户
     * @param int $id
     * @reteurn bool
     </span><span>*/</span>
    <span>public</span> <span>function</span> userDel(<span>$id</span><span>)
    {
        </span><span>if</span>(<span>$id</span><span>)
        {
            </span><span>$where</span> = <span>array</span>('id'=><span>$id</span><span>);

            </span><span>$bool</span> = <span>$this</span>->db->where(<span>$where</span>)->delete('users'<span>);

            </span><span>return</span> <span>$bool</span><span>;
        }
        </span><span>else</span><span>
        {
            </span><span>return</span> <span>false</span><span>;
        }
    }

    </span><span>/*</span><span>*
     * 修改用户
     * @param array $where 条件
     * @param array $data 新数据
     * @reteurn bool
     </span><span>*/</span>
    <span>public</span> <span>function</span> userEdit(<span>$where</span>, <span>$data</span><span>)
    {
        </span><span>if</span>(<span>$where</span> && <span>is_array</span>(<span>$where</span><span>))
        {
            </span><span>$bool</span> = <span>$this</span>->db->where(<span>$where</span>)->update('users', <span>$data</span><span>);

            </span><span>return</span> <span>$bool</span><span>;
        }
        </span><span>else</span><span>
        {
            </span><span>return</span> <span>false</span><span>;
        }
    }
}

</span><span>/*</span><span>*
 * 几点注意:
 * 1. 模型类名字User_model首字母大写, 其余字母小写, 继承基础模型类CI_Model
 * 2. 类文件名 application/models/user_model.php
 * 3. 控制器中如何载入此模型 : <br>    $this->load->model('User_model', 'user'); 这是以user为对象名引入;<br>    $this->load->model('User_model'); 这是默认以User_model为对象名引入. 模型文件支持子目录;<br>    如果类文件在application/models/blog/user_model.php中, 可以这样引入: $this->load->model('blog/User_model');
 * 4. 如果有需要, 你可以设置自动加载, 在 application/config/autoload.php文件中.<br> * 5. 如果没有设置自动连接数据库, 加在模型的时候可以设置连接, 像这样 $this->load->model('User_model', '', TRUE);
 </span><span>*/<br>Ps:<br>这里是一个联合查询的例子, 有需要可以尝试:<br>$res = $this->db->select('p.id, p.uid, p.order_no, p.amount, p.pay_way, p.pay_type, p.pay_bank, p.pay_time, p.goods_type, p.contact_tel, p.detail_desc, p.add_time, u.username')->from('payment as p')->join('users as u', 'p.uid = u.id')->order_by('p.id', 'desc')->get();</span>
로그인 후 복사

<span>/*</span><span>*
 * 用户控制器, CURD示例
 * @Chenwei
 </span><span>*/</span>
<span>class</span> Users <span>extends</span><span> CI_Controller
{
    </span><span>public</span> <span>function</span><span> __construct()
    {
        parent</span>::<span>__construct();

        </span><span>$this</span>->load->model('User_model', 'user'<span>);
    }
    
    </span><span>/*</span><span>*
     * 用户列表
     </span><span>*/</span>
    <span>public</span> <span>function</span><span> index()
    {
        </span><span>$data</span>['user_list'] = <span>$this</span>->user-><span>userInfo();

        </span><span>$this</span>->load->view('user_list', <span>$data</span><span>);  //调用模板, 并将数据输出到前台
    }

    </span><span>/*</span><span>*
     * 添加用户
     </span><span>*/</span>
    <span>public</span> <span>function</span><span> user_add()
    {
        </span><span>$data</span> = <span>array</span><span>(
            </span>'username'=><span>$this</span>->input->post('name'<span>);
            </span>'age'=><span>intval</span>(<span>$this</span>->input->post('age'<span>));
        );

        </span><span>$bool</span> = <span>$this</span>->user->userAdd(<span>$data</span><span>);

        </span><span>if</span>(<span>$bool</span><span>)
        {
           </span><span>$this</span>->show_tips('操作成功 !'<span>);
        }
        </span><span>else</span><span>
        {
            </span><span>$this</span>->show_tips('操作失败 !'<span>);
        }
    }

    </span><span>/*</span><span>*
     * 修改用户
     </span><span>*/</span>
    <span>public</span> <span>function</span><span> user_edit()
    {
        </span><span>$id</span> = <span>$this</span>->input->post('id'<span>);

        </span><span>$data</span> = <span>array</span><span>(
            </span>'username'=><span>$this</span>->input->post('name'<span>);
            </span>'age'=><span>intval</span>(<span>$this</span>->input->post('age'<span>));
        );

        </span><span>if</span>(<span>$id</span><span>)
        {<br>       $where = array('id'=>$id);<br>
            </span><span>$bool</span> = <span>$this</span>->user->userEdit(<span>$where</span>, <span>$data</span><span>);

            </span><span>if</span>(<span>$bool</span><span>)
            {
               </span><span>$this</span>->show_tips('操作成功 !'<span>);
            }
            </span><span>else</span><span>
            {
                </span><span>$this</span>->show_tips('操作失败 !'<span>);
            }
        }
        </span><span>else</span><span>
        {
            </span><span>$this</span>->show_tips('非法操作 !'<span>);
        }
    }

    </span><span>/*</span><span>*
     * 删除用户
     </span><span>*/</span>
    <span>public</span> <span>function</span><span> user_del()
    {
        </span><span>$id</span> = <span>$this</span>->input->post('id'<span>);

        </span><span>$bool</span> = <span>$this</span>->user->userDel(<span>$id</span><span>);

        </span><span>if</span>(<span>$bool</span><span>)
        {
           </span><span>$this</span>->show_tips('操作成功 !'<span>);
        }
        </span><span>else</span><span>
        {
            </span><span>$this</span>->show_tips('操作失败 !'<span>);
        }
    }
}

</span><span>/*</span><span>*<br> * 几点注意:
 * 1. 控制器文件在 application/controller/users.php , 支持子目录
 * 2. 控制器名首字母必须大写, 且必须继承CI_Controller
 * 3. 前后台权限控制都在application/core/MY_Controller.php文件中,<br>    定义两个控制器, 分别用于前台和后台, 继承CI_Controller , 其余都只需继承这两个自定义的控制器即可.
 * 4. 定义默认控制器, 在 application/config/route.php
 </span><span>*/</span>
로그인 후 복사

<span>/*</span><span>*
 * 视图层 示例
 * @Chenwei
 </span><span>*/</span>
<?<span>php
    </span><span>$this</span>->load->view('header'<span>);
</span>?>

<!-- 简单的输出 -->
<div>
    <table>
        <?php <span>if</span>(<span>$user_list</span>):?>
            <?php <span>foreach</span>(<span>$user_list</span> <span>as</span> <span>$v</span>):?>
            <tr><td><?=<span>$v</span>['username'];?></td></tr>
            <?php <span>endforeach</span>;?>
        <?php <span>endif</span>;?>
    </table>
</div>

<?<span>php
    </span><span>$this</span>->load->view('header'<span>);
</span>?>

<span>/*</span><span>*
 * 几点注意:
 * 1. 模板中可以直接使用控制器中分配的变量, 使用CI系统的所有函数和方法.
 * 2. 开启CI短标签支持后, 即使php未开启支持, CI也会帮我们自动解析, 可以放心使用.
 </span><span>*/</span>
로그인 후 복사

수작업 오류가 있을 수 있으니 위 코드를 직접 복사해서 사용하지 마시고, 보다 실용적인 CI 활용을 위해 언제든지 CI 매뉴얼을 참고하시기 바랍니다.

링크: http://www.cnblogs.com/farwish/p/3991419.html

@黑eyedpoet 

위 내용은 [CI]CodeIgniter의 신속한 개발 가이드를 다양한 측면에서 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

화웨이 GT3 Pro와 GT4의 차이점은 무엇입니까? 화웨이 GT3 Pro와 GT4의 차이점은 무엇입니까? Dec 29, 2023 pm 02:27 PM

많은 사용자들이 스마트 시계를 선택할 때 Huawei 브랜드를 선택하게 됩니다. 그 중 Huawei GT3pro와 GT4가 가장 인기 있는 선택입니다. 두 제품의 차이점을 궁금해하는 사용자가 많습니다. Huawei GT3pro와 GT4의 차이점은 무엇입니까? 1. 외관 GT4: 46mm와 41mm, 재질은 유리 거울 + 스테인레스 스틸 본체 + 고해상도 섬유 후면 쉘입니다. GT3pro: 46.6mm 및 42.9mm, 재질은 사파이어 유리 + 티타늄 본체/세라믹 본체 + 세라믹 백 쉘입니다. 2. 건강한 GT4: 최신 Huawei Truseen5.5+ 알고리즘을 사용하면 결과가 더 정확해집니다. GT3pro: ECG 심전도, 혈관 및 안전성 추가

수정: Windows 11에서 캡처 도구가 작동하지 않음 수정: Windows 11에서 캡처 도구가 작동하지 않음 Aug 24, 2023 am 09:48 AM

Windows 11에서 캡처 도구가 작동하지 않는 이유 문제의 근본 원인을 이해하면 올바른 솔루션을 찾는 데 도움이 될 수 있습니다. 캡처 도구가 제대로 작동하지 않는 주요 이유는 다음과 같습니다. 초점 도우미가 켜져 있습니다. 이렇게 하면 캡처 도구가 열리지 않습니다. 손상된 응용 프로그램: 캡처 도구가 실행 시 충돌하는 경우 응용 프로그램이 손상되었을 수 있습니다. 오래된 그래픽 드라이버: 호환되지 않는 드라이버가 캡처 도구를 방해할 수 있습니다. 다른 응용 프로그램의 간섭: 실행 중인 다른 응용 프로그램이 캡처 도구와 충돌할 수 있습니다. 인증서가 만료되었습니다. 업그레이드 프로세스 중 오류로 인해 이 문제가 발생할 수 있습니다. 이 문제는 대부분의 사용자에게 적합하며 특별한 기술 지식이 필요하지 않습니다. 1. Windows 및 Microsoft Store 앱 업데이트

Trezor Cold Wallet: Model One 및 Model T 기능 및 사용 가이드 Trezor Cold Wallet: Model One 및 Model T 기능 및 사용 가이드 Jan 19, 2024 pm 04:12 PM

많은 중앙화된 거래소에서 문제가 발생한 후 점점 더 많은 통화 투자자들이 중앙화된 거래소에서 발생하는 위험을 줄이기 위해 자산을 콜드 지갑으로 이전하기 시작했습니다. 이 글에서는 세계 최초의 콜드월렛 제공업체인 Trezor를 소개하겠습니다. 2014년 최초의 콜드월렛이 출시된 이후 전 세계 여러 나라에서 판매되고 있습니다. Trezor의 제품에는 2014년에 출시된 Model One과 2018년에 출시된 고급 버전인 Model T가 포함됩니다. 다음에서는 계속해서 이 두 제품과 다른 콜드월렛의 차이점을 소개하겠습니다. Trezor 콜드월렛이란 무엇인가요? 2014년 Trezor는 최초의 콜드 지갑 ModelOne을 출시했습니다. 일반적인 BTC, ETH, USDT 및 기타 통화 외에도 지갑은 1,000개 이상의 다른 통화도 지원합니다.

iPhone에서 App Store 오류에 연결할 수 없는 문제를 해결하는 방법 iPhone에서 App Store 오류에 연결할 수 없는 문제를 해결하는 방법 Jul 29, 2023 am 08:22 AM

1부: 초기 문제 해결 단계 Apple 시스템 상태 확인: 복잡한 솔루션을 살펴보기 전에 기본 사항부터 시작해 보겠습니다. 문제는 귀하의 기기에 있는 것이 아닐 수도 있습니다. Apple 서버가 다운되었을 수도 있습니다. Apple의 시스템 상태 페이지를 방문하여 AppStore가 제대로 작동하는지 확인하세요. 문제가 있는 경우 Apple이 문제를 해결하기를 기다리는 것뿐입니다. 인터넷 연결 확인: "AppStore에 연결할 수 없음" 문제는 때때로 연결 불량으로 인해 발생할 수 있으므로 인터넷 연결이 안정적인지 확인하십시오. Wi-Fi와 모바일 데이터 간을 전환하거나 네트워크 설정을 재설정해 보세요(일반 > 재설정 > 네트워크 설정 재설정 > 설정). iOS 버전을 업데이트하세요.

Laravel 컬렉션의 Where 메소드에 대한 실용 가이드 Laravel 컬렉션의 Where 메소드에 대한 실용 가이드 Mar 10, 2024 pm 04:36 PM

Laravel 컬렉션의 Where 메소드에 대한 실용 가이드 Laravel 프레임워크를 개발하는 동안 컬렉션은 데이터를 조작하기 위한 풍부한 메소드를 제공하는 매우 유용한 데이터 구조입니다. 그 중 Where 방식은 특정 조건에 따라 컬렉션의 요소를 필터링할 수 있는 일반적으로 사용되는 필터링 방식이다. 이 글에서는 Laravel 컬렉션에서 Where 메소드의 사용법을 소개하고 특정 코드 예제를 통해 사용법을 보여줍니다. 1. Where 메소드의 기본 사용법

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Docker 마운트 디렉토리 권한 문제를 해결하는 방법 Docker 마운트 디렉토리 권한 문제를 해결하는 방법 Feb 29, 2024 am 10:04 AM

Docker에서 탑재 디렉터리의 권한 문제는 일반적으로 탑재 디렉터리를 지정하기 위해 -v 매개 변수를 사용할 때 권한 관련 옵션을 추가하는 방법으로 해결됩니다. 마운트된 디렉토리 뒤에 ro 또는 :rw를 추가하여 마운트된 디렉토리의 권한을 지정할 수 있습니다. 이는 각각 읽기 전용 및 읽기-쓰기 권한을 나타냅니다. 예: dockerrun-v/host/path:/container/path:roimage_name 컨테이너 내부 작업이 권한 요구 사항을 준수하는지 확인하기 위해 컨테이너에서 실행 중인 사용자를 지정하려면 Dockerfile에서 USER 지시어를 정의하세요. 예: FROMimage_name#CreateanewuserRUNuseradd-ms/bin/

Laravel 컬렉션에서 Where 메소드를 사용하는 방법 Laravel 컬렉션에서 Where 메소드를 사용하는 방법 Mar 10, 2024 pm 10:21 PM

Laravel 컬렉션에서 Where 메소드를 사용하는 방법 Laravel은 개발자가 애플리케이션을 신속하게 구축할 수 있도록 다양한 기능과 도구를 제공하는 인기 있는 PHP 프레임워크입니다. 그 중 컬렉션은 Laravel의 매우 실용적이고 강력한 데이터 구조입니다. 개발자는 컬렉션을 사용하여 필터링, 매핑, 정렬 등과 ​​같은 데이터에 대한 다양한 작업을 수행할 수 있습니다. 컬렉션에서 Where 메서드는 지정된 조건에 따라 컬렉션을 필터링하는 데 일반적으로 사용되는 메서드입니다.

See all articles