# yang_book
**Repository Path**: dafeiji/yang_book
## Basic Information
- **Project Name**: yang_book
- **Description**: 老杨带你学Thinkphp3
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 3
- **Created**: 2016-01-11
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# yang_book
本目录是《老杨带你学Thinkphp3》的随书所有代码托管。应用场景的项目会单独一个仓库用于演示。
本代码示列里使用的Thinkphp是 2015-03-11官网下载的完整版。
## 目录结构
- .
- ./README.md
- ./examples 示列
- ./attach 附件
- ./ThinkPHP 框架目录
## 示列特点
基于 http://v3.bootcss.com/ 修改而来。
实现了滚动导航。
实现了ajax读取源码展示。
实现了代码高亮,代码复制本来那个手册里有zeroCopy,我参考源代码实现,结果复制按钮出现了,点击不起作用。哎没文档的困难。反正源码不多,直接看源码多方便。
所有示列放在一个页面显示避免多新开窗口的麻烦。
开放的文档,可以通过coding上的git 库 托管和演示
## 文档扩展方法
1.公共资源放examples 里的Public里
2.ThinkPHP框架公用
3.如果是简单的示列可以通过在startup里建控制器和模板和模型实现
4.独立的demo如auth这类,通过入口文件引入共同框架,然后自动生成项目目录自己补充
// +----------------------------------------------------------------------
// 应用入口文件
// 检测PHP环境
if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !');
// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false
define('APP_DEBUG',True);
//define('APP_DEBUG',false);
// 定义应用目录
define('APP_PATH','./Application/');
// 引入ThinkPHP入口文件
require './ThinkPHP/ThinkPHP.php';
5.导航可以参照目前的一级、二级结构自己添加,a里href写对应demo的演示区块id
6.演示区域又分效果和代码2个tab 如下面的 h2标题 里 id对应导航上的锚点
安全
效果是在以home结尾id的div里,一般是iframe,不要有/ safe是examples下层目录名 自由指定高度。
#xxx_code 的div 里面内容是代码 用section标签显示代码所处文件路径
safe的代码是手写的,没有高亮效果
其他的代码是通过data-ajax属性地址ajax加载的如template 模板的:
function example($id){
header('type-content:text/html;charset:utf-8;');
static $example_data = array(
'startup'=>array('Index/index'),
'startup_tags'=>array('Index/tags', 'Index/tags.html'),
'controller_home'=>array('Hello/hello'),
'model'=>array('Model/index'),
'template'=>array('Template/index', 'Template/index.html'),
);
$current = $example_data[$id];
$output = '';
foreach ($current as $key => $method) {
$output.= $this->source($method);
}
exit($output);
}
example 方法里 $example_data 存id和对应的相应模板文件。通过source方法定位文件和返回文件里对应id所包括文件的处理显示字符串。
locationFile 方法是定位文件的并返回相关代码的,可以自己指定规则。目前我只指定了模板和控制器文件规则。你们也可以扩展函数、模型等。具体实现看代码很容易理解的。
## 欢迎补完
本演示支持数据库,如果你想用什么表,可以在attach目录建对应表的生成sql。可以指定表前缀哦。examples.sql是我的备份。
对了为了兼容本地和coding数据库,请配置文件里将配置存为$config 变量,然后按照下面的方式做判断兼容:
'配置值'
'URL_ROUTER_ON' => true,
'URL_ROUTE_RULES' =>array(
'blog/read/:id' => '/blog/:1',
),
'URL_MODEL' => 2, // 如果你的环境不支持PATHINFO 请设置为3
'DB_TYPE' => 'mysql',
'DB_HOST' => 'localhost',
'DB_NAME' => 'examples',
'DB_USER' => 'root',
'DB_PWD' => '',
'DB_PORT' => '3306',
'DB_PREFIX' => 'model_',
// 'FIRE_SHOW_PAGE_TRACE'=>true,
);
if(isset($_ENV['VCAP_SERVICES'])){
$json = json_decode($_ENV['VCAP_SERVICES'], true);
$db = $json['mysql'][0]['credentials'];
$file_root = $json['filesystem-1.0']['credentials']['host_path'];
$config['DB_HOST'] = $db['hostname'];
$config['DB_NAME'] = $db['name'];
$config['DB_USER'] = $db['username'];
$config['DB_PWD'] = $db['password'];
$config['DB_PORT'] = $db['port'];
}
return $config;
## 联系方式
qq: 917647288 email:917647288@qq.com 微信:yangweijiester 微博:黑白世界4648