一些常用.NET代码~

     做WEB开发已有一年,每次都写重复的东西, 因此,想自己写一下框架,以后开发方便.

     本人之前学习asp.NET两年,JSP半年,可是后来因为工作的原故换成PHP.其实很不喜欢PHP的语法.还有PHP的函数名,每回都忘记..还是喜欢C#和JAVA的语法,哈...不过PHP有PHP的优点,不像ASP.NET那样封装了大量的东西,PHP更简单,更自由吧.还有应该就是PHP的开源组合.

  出写这编文章主要是因为那些东西要写给别人看,顺便发表了.高手看了别笑,菜鸟自己注意辨别,别被我的错误观点误导.

一.文件结构

   

├ index.php 入口文件
├ class 类存放的文件夹
   ├ base.class.php 基类
   ├ error.class.php 错误处理类
   ├ parms.class.php 获取参数类
            ├ control.class.php 控制类
           ├ model.class.php 模型类
           ├ template smartTemplate 类存放文件夹
          ├ db        adodb 类存放文件夹
├ includes 包含文件类
            ├ defines.inc.php 定义各路径文件
   ├ frameword.inc.php 框架处理文件
   ├ router.inc.php 路由文件,跟据参数,跳转不同路径
├ models 模式存放路径
├ views 模版文件保存路径
├ controls 存放控制类的文件夹
├ config.php 配置文件
├ admin 后台

二.  简单类图(UML的东西忘了差不多了)

三.入口文件 index.php

 

<? php

define ( " EXEC " , 1 );  // 初始化一个常量,保存别的文件必须先有这个入口文件的引用.

define ( ' PATH_BASE ' , dirname ( __FILE__ ));  // 获取入口文件的路径

define ( ' DS ' ,  DIRECTORY_SEPARATOR);  // 目录的分隔,’/’ 或’’

define ' PATH_ROOT ' ,             PATH_BASE );  // 站点的跟目录,跟据你的入品文件存放来定义,如果放在子目录下,则要做相应修改.如下,
//把路径分组

{ $parts   =   explode ( DS ,  PATH_BASE );
// 去除最后一个路径名
array_pop $parts  );

define ' PATH_ROOT ' ,              implode ( DS ,   $parts  ) );}

require_once (PATH_ROOT . DS . ' includes ' . DS . ' defines.inc.php ' );   // 各文件夹的路径
require_once (PATH_ROOT . DS . ' includes ' . DS . ' framework.inc.php ' );

echo   $request -> Get( ' a ' ); // 参数的获取GET方法
$request -> Post(‘a’); // 获取POST参数

?>

 

四,路径定义文件      defines.inc.php

 

<? php
/*
*/
//  no direct access
defined ' EXEC '  ) or  die ' Restricted access '  );  // 如果单独执行这个文件,将不能执行

//站点路径

define ' PATH_SITE ' ,             PATH_ROOT );
// 包含文件路径
define ' PATH_INCLUDE ' ,          PATH_ROOT . DS . ' includes ' );
// 类文件路径
define ' PATH_CLASS ' ,             PATH_ROOT . DS . ' class '  );
// 配置文件路径
define ' PATH_CONFIG ' ,             PATH_ROOT );

?>

 

五.        框架文件路径 frameword.inc.php

 

<? php

//  no direct access
defined ' EXEC '  ) or  die ' Restricted access '  );

// load error class
require_once ( PATH_CLASS . DS . ' error.class.php ' );   // 包含错误处理文件
//load base class

require_once ( PATH_CLASS . DS . ' base.class.php '  );  // 包含基类文件

//实例化基类

$load = new  Base();

// 实列化请求类 用于获取GET或POST
//加截一个自己写的类的方法
//把自己写的类放在class 文件夹下面,文件名的格式为demo.class.php
//那么类名就为 class demo{}
//实便化的方式为$demo=$load->library(‘demo’);
//调用demo类的Get函数则为 $demo->Get(‘参数’);


$request = $load -> library( ' params ' );
// 不同的目录用不同的URL方式
require_once ( PATH_BASE . DS . ' includes ' . DS . ' router.inc.php '  );

?>
 
六.    基类函数包含了常用的功能 base.class.php
<? php

//  no direct access
defined ' EXEC '  ) or  die ' Restricted access '  );

class  Base  extends  Error
{
    
    
var   $path_root      = '' ;
    
var   $path_class     = '' ;
    
var   $path_control   = '' ;

    
/* /构造函数
    *@parame path 应用路径
    *return null
    
*/
    
public   function  Base() 
    {
        
$this -> path_root    = PATH_ROOT;
        
$this -> path_class   = PATH_CLASS;
        
$this -> path_control = PATH_BASE . DS . ' controls ' ;
    }

    
// 加载模型
    //load model

     function  model( $name
    {
        
include_once  ( $this -> path_model . DS . $name . ' .php ' );
       
        
$model = null ;
        
if ( $model == null )
        {
            
$model = new   $name ();
        }
        
return   $model ;
  
    }

   
// output page
    /*
   *@paramater name file name
   *@paramater data replace
   *
   
*/
    
function  view( $name , $data
    {
        
$Template = self :: template( $file );
        
$Template -> output( $data );
        
unset ( $Template );
    }
    
    
// create database connection
     function  database()
    {
        
include_once  (PATH_CLASS . DS . ' db ' . DS . ' adodb.inc.php ' );
        
$this -> db  =  ADONewConnection();
        
$this -> db -> createdatabase  =   true ;
        
$result   =   $this -> db -> Connect(self :: config( ' db_host ' ,  self :: config( ' db_user ' ) ,  self :: config( ' db_password ' ) ,  self :: config( ' db_database ' ) );
        
if ( ! $result )
        {
            
die ( " Could not connect to the database. " );
        }
else {
            
$this -> db -> Execute( " set names 'utf8' " );
            
return   $this -> db;
        }
    }
    
    
// create template 
     function  template( $file )
    {
       
include_once  (PATH_CLASS . DS . ' template ' . DS . ' class.smarttemplate.php ' );
       
$Template   =   new  Smarttemplate( $file );
       
$Template -> template_dir = PATH_BASE . self :: config( ' template_dir ' );
       
$Template -> cache_dir    = PATH_BASE . self :: config( ' cache_dir ' );
   
       
return   $Template ;
    }
    
    
// import class 
     function  library( $className
    {
       
if ( empty ( $className ))
       {
         
return   null ;
         
exit ();
       }
      
else
      {
        
require_once (PATH_CLASS . DS . $className . ' .class.php ' );
        
return   new   $className ();

      }
    }
    
    
// return config value
     function   config( $parameter )
    {
        
require_once (PATH_CONFIG . DS . ' config.php ' );

        
return  CONFIG :: Ini() -> $parameter ;

    }
    
}


?>

 

七.   控制器父类control.class.php

 

   <? php
class  Control  extends  Base
{
    
var   $request ;
    
function  Control() 
    {
        
$this -> request = $this -> library( ' params ' );
    }

   
// output page
    /*
   *@paramater name file name
   *@paramater data replace
   *
   
*/
    
function  view( $name , $data = ''
    {
        
$Template = $this -> template( $name . ' .html ' );
        
$Template -> assign( ' site_root ' , $this -> config( ' site_root ' ));

        
$Template -> assign( $data );
        
$Template -> output();
        
unset ( $Template );
    }

   
// load model
     function  model( $name
    {
    
        
include_once  (PATH_BASE . DS . ' models ' . DS . $name . ' .php ' );
       
        
if ( $this -> model == null )
        {
            
$this -> model = new   $name ();
        }
        
return   $this -> model;
  
    }

}

?>

 

八.    模型父类 model.class.php

  <? php

class Model extends
 Base
{
    
var $request
;
    
var $db
;
    
function
 Model() 
    {
        
$this->request=$this->library('params'
);
    }

    
//create database connection

    function  database()
    {
        
if($this->db!=null
)
        {
            
return $this->
db;
            
exit
;
        }
        
include_once (PATH_CLASS.DS.'db'.DS.'adodb.inc.php'
);
        
$this->db =
 ADONewConnection();
        
$this->db->createdatabase = true
;
        
$result = $this->db->Connect($this->config('db_host', $this->config('db_user'), $this->config('db_password'), $this->config('db_database'
) );
        
if(!$result
)
        {
            
die("Could not connect to the database."
);
        }
else
{
            
$this->db->Execute("set names 'utf8'"
);
            
return $this->
db;
        }
    }

}

?>

九.  路由文件, router.inc.php

 

跟据URL,指定到相应的控制器, 跟据网站的URL表现形式编写
<?
php
// no direct access

defined'EXEC' ) or die'Restricted access'  );

//实例化类

$load=new  Base();

//实列化请求类 用于获取GET或POST

$request=$load->library('params' );

//获取参数

$option=@$request->get('option' );
$task  =@$request->get('task'
);

//如果未设置文件

if(empty($option ))
{
  
$option=$load->config('index_router'
);
}

include_once (PATH_BASE.DS.'controls'.DS.$option.'.php'
);

$Control=new $option
();

if(empty($task
))
{
    
$Control->
index();
}
else

{
    
$Control->$task ();
}


?>

十.使用方法

 

视图V:在把模板文件放在VIEW文件夹里面.命名方式为,login.html

控制C:把要怎么处理的文件放在control文件夹里面,
     
格式为.demo.php
      class demo extends Control

      {

        function edit()

        {

          $data=$this->user->issuer();//调用模型

          $this->view(‘login’,$data);//这个LOGIN为视图中的login.html文件

}

}

   模型 M:把文件放在 model文件夹里面.格式为.user.php
      

      class user extends Model

      {

        function issuer()

        {

          数据库或底层的操作,返回结果

}

}

 

 

 

   自定义类的调用,把类放在Class文件夹下面.格式为session.class.php

   先实例化.

   $session=$load->library(‘session’);

   然后再调用类中的函数
   $session->sessionId();

 

 

例子:

如下URL: http://127.0.0.1/com/admin/?option=test&task=getUser (:这里的URL格式可以在router.inc.php里面修改.同时为了让不同目录的地址格式不一样,比如前台和后台,因些,router.inc.php规则放在了入口文件的includes目录下面) 则会调用/admin/control/文件夹下面的test.php文件test类的getUser 函数,如果task参数为空,则调用index函数.

文件:/admin/control/test.php

<?php

  class test extends Control

  {

     function index()

        {

     }

     function getUser()

     {

        $data['user']=$this->model('member')->getUser();

              $this->view('test',$data);

}

function reg()

{

  if($this->model('member')->isUser())

  {

    $this->Alert(‘用户名已存在’); //error类中定义了

}

else

{

  $this->model('member')->addUser();

}

}

  }

 

?>

如果$this->model('member')这个模型经常用到,可以在引用类的构造函数中初始化,不要每次都实例化.:

Var $member;

function test()

{

  $this->member=$this->model('member');

}

这样,应用的时候只要. $this->member ->addUser();

 

 

 

$this->model(‘member’)->getUser();

为调用入口文件相应目录下的Models 文件夹下面的member.php文件里面的getUser();函数

文件:/admin/models/member.php

<?php

 

 class member extends Model

 {

        function getUser()

        {

       //return $this->db->GetOne("select username from user where userId=1");//这种方式处理数据库

      //$this->request->Get(‘test’)

      //$this->request->Post(‘test’) 这种方式获取参数,在父类中已定义

             return 'admin';

        }

 

     //验证用户名是否已经存在

     function isUser()

     {

       $userName=$this->request->Post(‘username’);

       $passWord=$this->request->Post(‘password’);

       return $this->db->GetOne(“select count(*) from user where username=’$userName’ and password=’$passWord’”);

}

 }

 

?>

 

 

$this->view(‘test’,$data);

显示视图,调用/admin/views/test.html文件,SmartTemplate 类的方式生成 $data 为数组

这部份请查看smartTemplate 类的使用方法

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值