草庐IT

PHP - Codeigniter 专业架构

coder 2024-04-26 原文

我下个月毕业。我正在申请入门级 php 开发人员职位。许多公司要求发送示例代码。

我正在发送示例 Controller 、 View 和模型文件以及一些输出的屏幕截图,但我没有通过。

请帮帮我。我哪里做错了?我应该送他们什么?有什么专业的编写/构建代码的方法吗?

我的示例代码文件是:

Controller

<?php

class NewsRelease extends Controller
{
    function NewsRelease()
    {
        parent::Controller();
        $this->load->helper('url');
        // $this->load->helper('form');
        $this->load->model('news_model');
        $this->load->library('session');
    }

    /*
    This is loads the home page called 'home_view'. Before loading this,
    It checks wheter the admin is logged in or not and clears the admin
    session. Because, When admin logged out, he will be shown this page.
    */

    function index()
    {
        $checksession=$this->session->userdata('name');
        if(isset($checksession))
        {
            $this->session->unset_userdata('name');
            $this->session->unset_userdata('password');
        }
        $this->load->view('home_view');
    }

    /*
    On loading the home page, to display all the feature news, the following
    function is needed.
    */

    function datanews()
    {
        //$data['hi']="Hello World";
        $query=$this->news_model->getactivenews();
        foreach($query->result_array() as $row1)
        {
            echo"<p><h4><b><a href='#' id='".$row1['ID']."'>".$row1['Title']."</a>
            </h4></b>".substr($row1['Body'],0,100)."<b>...<a href='#' 
            id='".$row1['ID']."'> read more></b></a></p></br>";
        }    
    }

    /*
    All the archive news can be shown by this function.   
    */

    function archiveNews()
    {
        $year=trim($this->input->post('year'));
        $query=$this->news_model->getArchiveNews($year);
        foreach($query->result_array() as $row1)
        {
            echo"<p><h4><b><a href='#' id='".$row1['ID']."'>".$row1['Title']."</a></h4>
            </b>".substr($row1['Body'],0,100)."<b>...<a href='#' id='".$row1['ID']."'> 
            read more></b></a></p></br>";
        }
    }

    /*
    On clicking the Admin link on the home page, he will be navigated
    to the admin login page.
    */

    function adminlogin()
    {
        $this->load->view('adminlogin_view');
    }

    /*
    The admin login authentication can be handled by thie function.
    And the session stores his ID and Password. 
    */

    function validate()
    {
        $name=trim($this->input->post('name'));
        $password=trim($this->input->post('pwd'));

        $sess_data=array("name" => $name,
            "password" => $password);
        $this->session->set_userdata($sess_data);

        if($name=="raj"&&$password=="raj")
        {
            echo "1";
        }
        else
            echo "0";
    }

    /*
    After successful authentication, Admin will be shown his home page
    where he can add, modify and delete the news.
    */

    function adminhome()
    {
        if($this->session->userdata('name') && $this->session->userdata('password'))
            $this->load->view('adminhome_view');
    }

    /* and some more functions go here. */

?>

查看

<?php $this->load->view('header'); ?>
<!-- scripthome.js has all the javascript and jquery code related to the functions which do the above mentioned process-->

<script type="text/javascript" src="<?php echo base_url();?>js/scripthome.js"></script>
<div id="content">

    <h3 class="FeatureNews"><a href="#" id="feature"> Feature News </a></h3><h3 class="admin"><?php echo anchor('newsrelease/adminlogin','Admin')?></h3>


    <div id="newsdetails">
        <!-- FEATURE NEWS DETAILS-->
    </div>
    <!--
    The archive page should display a list of all active news items in descending order (newest to oldest
    based on release date). Similar to the home page, archived news item features a title, a portion of
    the story and allow the users the ability to either click a title or a "read more" link to view the entire
    story
    -->

    <div id="newsarchivedetails">
        <!-- ARCHIVE NEWS-->
    </div>

    <div id="newsarchive">
        <!-- ARCHIVE NEWS-->
    </div>
    <div id="newshome">
        <!-- FEATURE NEWS-->

    </div>
    <div id="archivediv">
        <h3 class="archive">News Archive by</h3><h3><a href="#" id="2010"> 2010 </a> | <a href="#" id="2009"> 2009 </a> | <a href="#" id="2008"> 2008 </a></h3> <a href="#" id="2007">2007</a>
    </div>
    <!-- CONTENT CLOSE -->

</div>

<!-- WRAPPER CLOSE -->
<?php $this->load->view('footer');?>

型号

<?php

class News_model extends Model
{
    function News_model()
    {
        parent::Model();    
    }

    /*
    It gets all the featured news from the table News.
    */

    function getactivenews()
    {
        $this->db->where('Status','1');
        $this->db->where('Type','1');
        $this->db->order_by('ID','desc');
        return $this->db->get('News'); 
    }

    /*
    It gets all the news whose type is '0'(archived)
    */

    function getArchiveNews($year)
    {
        $this->db->where('year(Date)',$year);
        $this->db->where('Status','1');
        $this->db->where('Type','0');
        $this->db->order_by('ID','desc');
        return $this->db->get('News');
    }

}

?>

最佳答案

  1. 您可以从从 Controller 类 (MVC) 中删除 HTML 标记开始
  2. 创建适当的文档(@return、@param 等)
  3. 大多数公司希望在实时服务器上查看代码 + 该代码的工作版本
  4. 如果不是 CodeIgniter 特定的工作,也显示非 CodeIgniter 代码
  5. 向他们展示您可以读/写 UML 图
  6. 添加一些多样性(XML、SOAP、OOP、不同的数据库类型、文件上传、 session 、安全性等)
  7. 指出您至少通过测试驱动开发或行为驱动开发来构建代码

当然……祝你好运!!

关于PHP - Codeigniter 专业架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4190397/

有关PHP - Codeigniter 专业架构的更多相关文章

  1. ruby - Ruby 和 Ruby on Rails 中的三层架构 - 2

    我是一名决定学习Ruby和RubyonRails的ASP.NETMVC开发人员。我已经有所了解并在RoR上创建了一个网站。在ASP.NETMVC上开发,我一直使用三层架构:数据层、业务层和UI(或表示)层。尝试在RubyonRails应用程序中使用这种方法,我发现没有关于它的信息(或者也许我只是找不到它?)。也许有人可以建议我如何在RubyonRails上创建或使用三层架构?附言我使用ruby​​1.9.3和RubyonRails3.2.3。 最佳答案 我建议在制作RoR应用程序时遵循RubyonRails(RoR)风格。Rails

  2. ruby-on-rails - 这个 C 和 PHP 程序员如何学习 Ruby 和 Rails? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我来自C、php和bash背景,很容易学习,因为它们都有相同的C结构,我可以将其与我已经知道的联系起来。然后2年前我学了Python并且学得很好,Python对我来说比Ruby更容易学。然后从去年开始,我一直在尝试学习Ruby,然后是Rails,我承认,直到现在我还是学不会,讽刺的是那些打着简单易学的烙印,但是对于我这样一个老练的程序员来说,我只是无法将它

  3. ruby-on-rails - 具有六边形架构和 DCI 模式的框架和数据库适配器 - 2

    我尝试用Ruby设计一个基于Web的应用程序。我开发了一个简单的核心应用程序,在没有框架和数据库的情况下在六边形架构中实现DCI范例。核心六边形中有小六边形和网络,数据库,日志等适配器。每个六边形都在没有数据库和框架的情况下自行运行。在这种方法中,我如何提供与数据库模型和实体类的关系作为独立于数据库的关系。我想在将来将框架从Rails更改为Sinatra或数据库。事实上,我如何在这个核心Hexagon中实现完全隔离的rails和mongodb的数据库适配器或框架适配器。有什么想法吗? 最佳答案 ROM呢?(Ruby对象映射器)。还有

  4. ruby-on-rails - 使用 Kernel#fork 进行后台进程,专业人士?缺点? - 2

    我想知道使用fork{}从Rails应用程序“后台”处理是否是个好主意...从我收集到的fork{my_method;Process#setsid}实际上做了它应该做的事情。1)创建另一个具有不同PID的进程2)不中断调用过程(例如它继续w/o等待fork完成)3)执行子进程直到它完成..这很酷,但这是个好主意吗?fork到底在做什么?它会在内存中创建我的整个railsmongrel/passenger实例的重复实例吗?如果是这样那就太糟糕了。或者,它是否以某种方式在不消耗大量内存的情况下完成。我的最终目标是取消我的后台守护进程/队列系统,转而支持这些进程的fork(主要是发送电子邮件

  5. 设计一个亿级高并发系统架构 - 12306火车票核心场景DDD领域建模 - 2

    “架设一个亿级高并发系统,是多数程序员、架构师的工作目标。许多的技术从业人员甚至有时会降薪去寻找这样的机会。但并不是所有人都有机会主导,甚至参与这样一个系统。今天我们用12306火车票购票这样一个业务场景来做DDD领域建模。”开篇要实现软件设计、软件开发在一个统一的思想、统一的节奏下进行,就应该有一个轻量级的框架对开发过程与代码编写做一定的约束。虽然DDD是一个软件开发的方法,而不是具体的技术或框架,但拥有一个轻量级的框架仍然是必要的,为了开发一个支持DDD的框架,首先需要理解DDD的基本概念和核心的组件。一.什么是领域驱动设计(DDD)首先要知道DDD是一种开发理念,核心是维护一个反应领域概

  6. ruby-on-rails - Rails 还是 Sinatra? PHP程序员入门学习哪个好? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我使用PHP的时间太长了,对它感到厌倦了。我也想学习一门新语言。我一直在使用Ruby并且喜欢它。我必须在Rails和Sinatra之间做出选择,那么您会推荐哪一个?Sinatra真的不能用来构建复杂的应用程序,它只能用于简单的应用程序吗?

  7. ruby-on-rails - PHP 魔术方法 __call、__get 和 __set 的 Ruby 等价物 - 2

    我很确定Ruby有这些(等同于__call、__get和__set),否则find_by将如何在Rails中工作?也许有人可以举一个简单的例子来说明如何定义与find_by相同的方法?谢谢 最佳答案 简而言之你可以映射__调用带有参数的method_missing调用__设置为方法名称以'='结尾的method_missing调用__获取不带任何参数的method_missing调用__调用PHPclassMethodTest{publicfunction__call($name,$arguments){echo"Callingob

  8. ruby - Lisp - 是否适合网络编程/应用程序(交互式)? ruby 的方式是? php的方式是? - 2

    Lisp是否适合Web编程/应用程序(交互式),就像ruby​​和php一样?需要考虑的事情是:易于使用可部署性难度(尤其是对于编程初学者而言)(编辑)在阅读PaulGraham'sessay之后,我特别提到了CommonLisp.将是我的第一门编程语言。在这方面。这样做合适吗?我听说Clojure的宏功能不如CommonLisp的强大,这就是我尝试学习Clojure的原因。它教授编程并且非常强大。 最佳答案 Lisp是一个语系,而不是单一的语言。为了稍微回答您的问题,是的,存在用于各种Lisp方言的Web框架,例如用于Common

  9. ruby - 写密集型特征的架构 - 2

    我在当前项目中使用由Oracle数据库和memcached支持的RubyonRails。有一个非常常用的功能,它依赖于单个数据库View作为数据源,并且该数据源内部有其他数据库View和表。这是一个虚拟数据库View,能够从一个地方访问所有内容,而不是物化数据库View。大多数情况下,如果用户正在使用他们希望更新的功能,那么让数据保持最新很重要。从这个View获取数据时,我将安全表内部连接到View(安全表不是View本身的一部分),其中包含一些我们用来在更细粒度级别上控制数据访问的字段。例如,安全表有user_id,prop_1,prop_2列,其中prop_1,prop_2是数据库

  10. 软件工程毕业设计课题(81)微信小程序毕业设计PHP校园跑腿小程序系统设计与实现 - 2

        项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于微信校园跑腿小程序系统,前台用户使用小程序发布跑腿任何和接跑腿任务,后台管理使用基于PHP+MySql的B/S架构;通过后台管理跑腿的用户、查看跑腿信息和对应订单。意义:手机网络时代,大学生通过手机网购日常用品、外卖外卖、代取快递等已不再是稀奇的事情。此外,不少高校还流行着校园有偿工作,校园跑腿就成了大学生创业服务项目。        因为你在校园里,所以不会有进入的限制。并不是所有的外卖平台都可以随意进入校园,比如小黄和小蓝的双打外卖平台。许多大学禁止送餐进入学校,更不用说送餐进入宿舍了。这一措施使得校园服务市场的竞争相对不

随机推荐