一:商城框架搭建示例图
二:文件存放目录位置图片
三:代码部分
index.php代码
<span>1</span> <span>php </span><span>2</span><span>/*</span><span>* </span><span>3</span><span>用户直接访问的页面 </span><span>4</span><span>先加载框架初始化文件:init.php </span><span>5</span><span>*/</span><span>6</span><span>require</span>('./include/init.php'<span>); </span><span>7</span><span>$conf</span> = conf::<span>getIns(); </span><span>8</span><span>echo</span><span>$conf</span>->host."<br>";
init.php代码
<span> 1</span> <span>php </span><span> 2</span><span>/*</span><span>* </span><span> 3</span><span>file init.php </span><span> 4</span><span>作用:框架初始化 </span><span> 5</span><span>*/</span><span> 6</span><span>/*</span><span>过滤参数,用递归的方式过滤$_GET,$_POST,$_COOKIE. 暂时放下</span><span>*/</span><span> 7</span><span>/*</span><span>初始化当前的绝对路径</span><span>*/</span><span> 8</span><span>//</span><span>换成正斜线是因为 win/linux 都支持正斜线,而linux不支持反斜线。也就是兼容性问题</span><span> 9</span><span>define</span>('ROOT', <span>str_replace</span>("\\", "/", <span>dirname</span>(<span>__FILE__</span>)) . '/'<span>); </span><span>10</span><span>//</span><span>引入数据库类和conf类文件</span><span>11</span><span>require</span>(ROOT . 'db.class.php'<span>); </span><span>12</span><span>require</span>(ROOT . 'conf.class.php'<span>); </span><span>13</span><span>/*</span><span>设置报告错误级别</span><span>*/</span><span>14</span><span>define</span>("DEBUG",<span>true</span><span>); </span><span>15</span><span>//</span><span>若果DEBUG为真,说明我们开启调试模式</span><span>16</span><span>if</span>( <span>defined</span>('DEBUG'<span>) ){ </span><span>17</span><span>error_reporting</span>(<span>E_ALL</span><span>); </span><span>18</span> }<span>else</span><span>{ </span><span>19</span><span>//</span><span>否则说明,我们的文件是在服务器上供用户访问,则不报错,避免安全隐患问题</span><span>20</span><span>error_reporting</span>(0<span>); </span><span>21</span> }
db.class.php
<span> 1</span> <span>php </span><span> 2</span><span>/*</span><span>* </span><span> 3</span><span>file db.class.php </span><span> 4</span><span>作用: 数据库类 </span><span> 5</span><span>因为目前不知道使用什么数据库,因此我们先来写个接口 </span><span> 6</span><span>*/</span><span> 7</span><span>abstract</span><span>class</span><span> db{ </span><span> 8</span><span>/*</span><span> 9</span><span> 连接服务器 </span><span>10</span><span> parms $h 服务器地址 </span><span>11</span><span> parms $u 用户名 </span><span>12</span><span> parms $p 密码 </span><span>13</span><span> return bool </span><span>14</span><span>*/</span><span>15</span><span>public</span><span>abstract</span><span>function</span> connect(<span>$h</span>,<span>$u</span>,<span>$p</span><span>); </span><span>16</span><span>/*</span><span>17</span><span> 发送查询 </span><span>18</span><span> parms $sql 发送的sql语句 </span><span>19</span><span> return mixed bool/resource </span><span>20</span><span>*/</span><span>21</span><span>public</span><span>abstract</span><span>function</span> query(<span>$sql</span><span>); </span><span>22</span><span>/*</span><span>23</span><span> 查询多行数据 </span><span>24</span><span> parms $sql select型语句 </span><span>25</span><span> return array/false </span><span>26</span><span>*/</span><span>27</span><span>public</span><span>abstract</span><span>function</span> getAll(<span>$sql</span><span>); </span><span>28</span><span>/*</span><span>29</span><span> 查询单行数据 </span><span>30</span><span> parms $sql select型语句 </span><span>31</span><span> return array/false </span><span>32</span><span>*/</span><span>33</span><span>public</span><span>abstract</span><span>function</span> getRow(<span>$sql</span><span>); </span><span>34</span><span>/*</span><span>35</span><span> 查询单个数据 </span><span>36</span><span> parms $sql select型语句 </span><span>37</span><span> return array/false </span><span>38</span><span>*/</span><span>39</span><span>public</span><span>abstract</span><span>function</span> getOne(<span>$sql</span><span>); </span><span>40</span><span>/*</span><span>41</span><span> 自动执行insert/update语句 </span><span>42</span><span> parms $sql select型语句 </span><span>43</span><span> return array/false </span><span>44</span><span> 例如: </span><span>45</span><span> $this->autoExecute('user',array('username'=>'zs', 'email'=>'zs@qq.com', 'insert')); </span><span>46</span><span> 将自动转成:insert into user(username,email) values ('zs', 'zs@qq.com'); </span><span>47</span><span>*/</span><span>48</span><span>public</span><span>abstract</span><span>function</span> autoExecute(<span>$table</span>,<span>$data</span>,<span>$act</span>='insert',<span>$where</span><span>); </span><span>49</span> }
conf.class.php代码
<span> 1</span> <span>php </span><span> 2</span><span>/*</span><span>* </span><span> 3</span><span>file conf.class.php </span><span> 4</span><span>作用:配置文件读取类 </span><span> 5</span><span>*/</span><span> 6</span><span>class</span><span> conf{ </span><span> 7</span><span>//</span><span>静态属性用来存放本类实例化的对象</span><span> 8</span><span>protected</span><span>static</span><span>$ins</span> = <span>null</span><span>; </span><span> 9</span><span>//</span><span>保存读取过来的配置文件信息</span><span>10</span><span>protected</span><span>$data</span> = <span>array</span><span>(); </span><span>11</span><span>//</span><span>将conf类的构造函数保护起来,且不让继承(防止改写)</span><span>12</span><span>final</span><span>protected</span><span>function</span><span> __construct(){ </span><span>13</span><span>//</span><span>一次性把配置文件信息读过来,赋给data属性,这样以后就不用管配置文件 </span><span>14</span><span> //再找配置文件信息直接找$data就可以了</span><span>15</span><span>include</span>(ROOT . 'config.inc.php'<span>); </span><span>16</span><span>$this</span>->data = <span>$_CFG</span><span>; </span><span>17</span><span> } </span><span>18</span><span>final</span><span>protected</span><span>function</span><span> __clone(){ </span><span>19</span><span> } </span><span>20</span><span>//</span><span>单例模式</span><span>21</span><span>public</span><span>static</span><span>function</span><span> getIns(){ </span><span>22</span><span>if</span>(self::<span>$ins</span><span> instanceof self){ </span><span>23</span><span>return</span> self::<span>$ins</span><span>; </span><span>24</span> }<span>else</span><span>{ </span><span>25</span> self::<span>$ins</span> = <span>new</span><span> self(); </span><span>26</span><span>return</span> self::<span>$ins</span><span>; </span><span>27</span><span> } </span><span>28</span><span> } </span><span>29</span><span>//</span><span>用魔术方法,读取data属性内的信息</span><span>30</span><span>public</span><span>function</span> __get(<span>$key</span><span>){ </span><span>31</span><span>if</span>(<span>array_key_exists</span>(<span>$key</span>, <span>$this</span>-><span>data)){ </span><span>32</span><span>return</span><span>$this</span>->data[<span>$key</span><span>]; </span><span>33</span> }<span>else</span><span>{ </span><span>34</span><span>return</span><span>null</span><span>; </span><span>35</span><span> } </span><span>36</span><span> } </span><span>37</span><span>//</span><span>在运行期间,动态增加或改变配置选项</span><span>38</span><span>public</span><span>function</span> __set(<span>$key</span>, <span>$value</span><span>){ </span><span>39</span><span>$this</span>->data[<span>$key</span>] = <span>$value</span><span>; </span><span>40</span><span> } </span><span>41</span><span>} </span><span>42</span><span>/*</span><span>43</span><span>//测试代码 </span><span>44</span><span>//测试是否可以创建单例模式对象出来 </span><span>45</span><span>$conf = conf::getIns(); </span><span>46</span><span>//读取选项 </span><span>47</span><span>echo $conf->host."<br>"; </span><span>48</span><span>echo $conf->user."<br>"; </span><span>49</span><span>//动态追加选项 </span><span>50</span><span>$conf->template_dir = "D:\LAMP\Apache2.2\htdocs\boolshop\include"; </span><span>51</span><span>echo $conf->template_dir; </span><span>52</span><span>*/</span><span>53</span> config.inc.<span>php代码 </span><span>54</span> <span>php </span><span>55</span><span>/*</span><span>* </span><span>56</span><span>file config.inc.php </span><span>57</span><span>作用:配置文件 </span><span>58</span><span>*/</span><span>59</span><span>$_CFG</span> = <span>array</span><span>(); </span><span>60</span><span>$_CFG</span>['host'] = 'localhost'<span>; </span><span>61</span><span>$_CFG</span>['user'] = 'root'<span>; </span><span>62</span><span>$_CFG</span>['pwd'] = '123456';
以上就介绍了第一讲商城项目搭建(第138讲),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。