开发人员应该用好的一些网站

我们在开发项目的时候,大多数模块都是逐字逐句敲打出来的,然而随着开源的蓬勃发展,涌现出了好多优秀 的开源项目,这些项目不仅能加快开发应用,而且能给我们的开发带来灵感。如果开发人员能灵活应用好这些优秀的开源项目,那也是一笔丰厚的知识财富,下面是 笔者整理的一些优秀的网站,相信能对开发人员有所帮助。


代码搜索平台:

SourceForge

一个非常优秀的有多年历史的老牌开源项目共享平台。

CodePlex

微软的一个开源项目分享平台,你可以在上面创建项目同全世界分享。

Google Code Search

 

Google的代码搜索引擎,凭借自己的搜索技术优势,可想而知这也是一个优秀的网站。

CodeProject

一个不错的代码分享网站,里面含有大量的源代码和Demo。

ByetMyCode

该平台中你不但可以搜索代码之外,还可以参与分享代码,修改,评论等,可以说是一个Web2.0的代码分享平台。

Codase

 

优秀的源代码搜索引擎,目前好像主要针对Java,C,C++这几种语言。

freshmeat

特点在于其拥有大量的Unix,Palm OS,跨平台的开源软件和应用程序。

koders

20亿行的代码量可供检索,一个不可多的的代码搜索引擎。

gotAPI

汇集了大部分计算机开发手册,
查找方便且实用。

planet-source-code

老牌的代码分享平台。

GitHub

 

新起的代码搜索平台,除了开源啊代码外还有商业代码。

krugle

 优秀的源代码,开源项目搜索引擎。

launchpad



收集了大量的开源项目可供检索。
GrepDocs

针对各开发语言文档的检索。

Merobase



搜索对项目有用的代码段。



开源项目平台:


开源中国社区


国内优秀的开源社区

CSharp-Source.net

收集了C#方面的开源项目。

Python Source

Python的开源项目。
RubyForge


Ruby方面的开源
项目

VC Forge


C++方面的开源项目。
codebot


Delphi方面的开源项目。



Java-Source.net




Java的开源项目。


51aspx


Asp.Net的源码下载平台,可以查看项目的代码文件,
是中文中比较优秀的平台。



IT导航平台:

Google编程导航

114la编程导航

中国IT开发网址导航

thinkphp关于session的使用总结

ThinkPHP官方的说明文档

  1. start 启动session
  2. pause 暂停session
  3. clear 清除session
  4. destroy 销毁session
  5. get 获取session
  6. getLocal 获取私有session
  7. set 设置session
  8. setLocal 设置私有session
  9. name 获取或者设置session_name
  10. is_set 是否设置session
  11. is_setLocal 是否设置私有session
  12. id 获取或者设置session_id
  13. path 获取或者设置session_save_path
  14. setExpire 设置session过期时 间
  15. setCookieDomain 设置有效域名
  16. setCallback 设置Session 对象反序列化时候的回调函数

最常用的操作方法示例:


代码:

  1. // 检测Session变量是否存在
  2. Session::is_set('name');
  3.  
  4. // 给Session变 量赋值
  5.  
  6. Session::set('name','value');
  7.  
  8. // 获取Session变量
  9.  
  10. Session::get('name');

和Session相关的配置参数:


代码:

  1. 'SESSION_NAME'=>'ThinkID',                // 默认Session_name
  2.         
  3. 'SESSION_PATH'=>'',                        // 采用默认的Session save path
  4.         
  5. 'SESSION_TYPE'=>'File',                        // 默认Session类型 支持 DB 和 File 
  6.         
  7. 'SESSION_EXPIRE'=>'300000',                // 默认Session有效期
  8.         
  9. 'SESSION_TABLE'=>'think_session',        // 数据库Session方式表名
  10.         
  11. 'SESSION_CALLBACK'=>'',                        // 反序列化对象的回调方法

其中SESSION_NAME 参数需要注意,如果需要在不同的项目之间不共享传递Session的值,请设置不同的值,否则请保留相同的默认值。
如 果设置了相同的SESSION_NAME的值,但是又希望创建基于项目的私有Session空间,应该怎么处理呢?ThinkPHP还支持以项目为 Session空间的私有Session操作,以之前的常用操作为例,我们更改如下:


代码:

  1. // 检测Session变量是否存在(当前项目有效)
  2. Session::is_setLocal('name');
  3.  
  4. // 给Session变 量赋值(当前项目有效)
  5.  
  6. Session::setLocal('name','value');
  7.  
  8. // 获取Session变量(当前 项目有效)
  9.  
  10. Session::getLocal('name');

这样,和全局的Session操作就不会冲突,可以用于一些特殊情况的需要。

ThinkPHP支持数据库方式的Session操 作,设置SESSION_TYPE的值为DB就可以了,如果使用数据库方式,还要确保设置好SESSION_TABLE的值,并且导入下面的DDL到你的 数据库(以MySQL为例子):


代码:

  1. CREATE TABLE `think_session` (
  2.   `
  3. id` int(11) unsigned NOT NULL auto_increment,
  4.   `
  5. session_id` varchar(255) NOT NULL,
  6.   `
  7. session_expires` int(11) NOT NULL,
  8.   `
  9. session_data` blob,
  10.   
  11. PRIMARY KEY  (`id`)        
  12. )

注意,Db Session方式的数据库连接会采用项目的数据库配置信息进行连接。除了数据库方式外,还可以增加其它方式的Session保存机制,例如内存方式、 Memcache方式等,我们只要增加相应的过滤器就行了,使用session_set_save_handler 方法,具体的方法定义参考Think.Util.Filter下面的FilterSessionDb.class.php 文件的实现。

 

制作了一个简单的登陆判断

登陆检测之后赋予Session值,使Session的值为非空即为假的false

$_SESSION[C('USER_AUTH_KEY')] = $logInFind['id'] ;
其中 [C('USER_AUTH_KEY')]为ThinkPHP的内置方法和函数类。在未配置config.php文件时默认为空
把$logInFind['id'] 取出的帐号值赋予它,默认为关闭页面Session就自动删除消失!

其它页面使用下面格式判断
if(!isset($_SESSION[C('USER_AUTH_KEY')])) {  //isset 是检测变量是否赋值!
     $this->redirect('Login','Login'); //转到注册页面
    }

thinkphp 自带常量

Action中使用的系统常量

THINK_PATH // ThinkPHP 系统目录
APP_PATH // 当前项目目录
APP_NAME // 当前项目名称
MODULE_NAME //当前模块名称
ACTION_NAME // 当前操作名称
TMPL_PATH // 项目模版目录
LIB_PATH // 项目类库目录
CACHE_PATH // 项目模版缓存目录
CONFIG_PATH //项目配置文件目录
LOG_PATH // 项目日志文件目录
LANG_PATH // 项目语言文件目录
TEMP_PATH //项目临时文件目录
PLUGIN_PATH // 项目插件文件目录
VENDOR_PATH // 第三方类库目录
DATA_PATH // 项目数据文件目录
IS_APACHE // 是否属于 Apache
IS_IIS //是否属于 IIS
IS_WIN //是否属于Windows 环境
IS_LINUX //是否属于 Linux 环境
IS_FREEBSD //是否属于 FreeBsd 环境
NOW_TIME // 当前时间戳
MEMORY_LIMIT_ON // 是否有内存使用限制
OUTPUT_GZIP_ON // 是否开启输出压缩
MAGIC_QUOTES_GPC // MAGIC_QUOTES_GPC
THINK_VERSION //ThinkPHP 版本号
LANG_SET // 浏览器语言
TEMPLATE_NAME //当前模版名称
TEMPLATE_PATH //当前模版路径
__ROOT__ // 网站根目录地址
__APP__ // 当前项目(入口文件)地址
__URL__ // 当前模块地址
__ACTION__ // 当前操作地址
__SELF__ // 当前 URL 地址
TMPL_FILE_NAME //当前操作的默认模版名(含路径)
WEB_PUBLIC_URL //网站公共目录
APP_PUBLIC_URL //项目公共模版目录

 

模板中使用的系统常量

_PHP_FILE_ /当前文件名
__ROOT__ // 网站根目录地址
__APP__ // 当前项目(入口文件)地址
__URL__ // 当前模块地址
__ACTION__ // 当前操作地址
__SELF__ // 当前 URL 地址
__PUBLIC__ // 网站公共目录
../Public(不区分大小写) // 项目公共模版目录
 

thinkPHP学习笔记[持续更新]

快捷方法:
A:快速实例化Action类库
B:执行行为类
C:配置参数存取方法
D:快速实例化Model类库
F:快速简单文本数据存取方法
L:语言参数存取方法
M:快速高性能实例化模型
R:快速远程调用Action类方法
S:快速缓存存取方法
U:URL动态生成和重定向方法
W:快速Widget输出方法

导入:
Vendor\Zend\Filter\Dir.php
Vendor('Zend.Filter.Dir');

lib\Think\Util\Session.class.php
import("Think.Util.Session");

MyApp项目下面的Lib\Action\UserAction.class.php
import("MyApp.Action.UserAction");

lib\当前项目\Action\UserAction.class.php
import("@.Action.UserAction");

ORG/User.Info.class.php
import("ORG.User#Info");

import('AdvModel');
如果有定义AdvModel别名,则import方法会自动加载定义的别名导入。系统默认的别名定义文件位于系统的Common\alias.php,每个模式和项目都可以定义自己的别名定义文件。

自动加载:__autoload()
系统自动加载ThinkPHP基类库和当前项目的model和Action对象,并且支持配置自动加载路径。APP_AUTOLOAD_PATH(common\convention.php)参数是用于设置框架的自动导入的搜索路径的,默认的配置是Think.Util.,因此才会实现自动导入Think.Util工具类库。例如,我们需要增加ORG.Util.路径作为类库搜索路径,可以使用:'APP_AUTOLOAD_PATH'=> 'Think.Util.,ORG.Util.。

建立新项目:
导入thinkPHP的目录里的ThinkPHP.php,然后执行app:run() ThinkPHP即可自动建立新项目的目录结构。

链接数据库:
$this->db = Db::getInstance(empty($this->connection)?'':$this->connection);

获得配置文件的参数值:
C('参数名称') // 获取已经设置的参数值

跨模块调用方法:
$User = A("User") ===== import("@.Action.UserAction");

R('User','importUser');// 远程调用UserAction控制器的importUser操作方法
A("User","App2"); // 实例化App2项目的UserAction控制器对象
R("User","importUser","App2");// 远程调用App2项目的UserAction控制器的importUser操作方法

跨项目调用模块:
$User = D('User', 'Admin'); // 实例化Admin项目下面的User模型
如果启用了模块分组功能,可使用:$User = D('Admin.User');

实例化模型:
 1、基础模型model类:$User = new Model('User'); || $User = M('User');
 2、其他模型类:$User = new CommonModel('User'); || $User = M('User', 'CommonModel');
 3、用户定义的模型类(项目\Lib\Model):$User = new UserModel(); || $User = D('User');
 4、实例化空模型类:$Model = new Model(); || $Model = M();
                    $Model->query('SELECT * FROM think_user where status=1');

系统配置:
惯例配置(common\convention.php) - 项目配置(项目\conf\config.php) - 调试配置(think\common\debug.php)
- 分组配置(项目\分组名\config.php) - 模块配置(项目\分组名\[模块名小写]_config.php) - 动态配置(具action里的配置)
有效性为:右 > 左