<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>ThinkPHP on Foam 的博客</title>
    <link>https://blog.foamzou.com/categories/ThinkPHP/</link>
    <description>Recent content in ThinkPHP on Foam 的博客</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Tue, 02 Jun 2015 22:45:14 +0800</lastBuildDate>
    <atom:link href="https://blog.foamzou.com/categories/ThinkPHP/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>ThinkPHP3.2.3引用第三方类库的问题</title>
      <link>https://blog.foamzou.com/posts/thinkphp3-2-3%E5%BC%95%E7%94%A8%E7%AC%AC%E4%B8%89%E6%96%B9%E7%B1%BB%E5%BA%93%E7%9A%84%E9%97%AE%E9%A2%98/</link>
      <pubDate>Tue, 02 Jun 2015 22:45:14 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/thinkphp3-2-3%E5%BC%95%E7%94%A8%E7%AC%AC%E4%B8%89%E6%96%B9%E7%B1%BB%E5%BA%93%E7%9A%84%E9%97%AE%E9%A2%98/</guid>
      <description>&lt;p&gt;最近在做页面的抓取工作，用到了一个很方便的项目——QueryList，这是基于PhpQuery开发的。 因为只需要很少的代码就能完成复杂的正则抓取，所以我决定将它集成到ThinkPHP使用。 由于ThinkPHP3.2使用了命名空间，所以我一开始想要将QueryList里的类文件都加上命名空间，以规范化。但后面折腾了好久，未果(毕竟这项目require的文件太多了，且一个方法又同时写了静态和非静态，改起来难度还是比较大的)。Ok，咱还是用比较原始的方法吧。 于是我将这个第三方项目文件放在Org下&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;import&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Org.Jae.QueryList&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;//导入类
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$hj&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;\QueryList&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;Query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$url&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$reg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;//这里记得要加上\，表示该类是属于根命名空间的
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>ThinkPHP3.2.3中数据库字段大小写问题</title>
      <link>https://blog.foamzou.com/posts/thinkphp3-2-3%E4%B8%AD%E6%95%B0%E6%8D%AE%E5%BA%93%E5%AD%97%E6%AE%B5%E5%A4%A7%E5%B0%8F%E5%86%99%E9%97%AE%E9%A2%98/</link>
      <pubDate>Tue, 28 Apr 2015 14:31:08 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/thinkphp3-2-3%E4%B8%AD%E6%95%B0%E6%8D%AE%E5%BA%93%E5%AD%97%E6%AE%B5%E5%A4%A7%E5%B0%8F%E5%86%99%E9%97%AE%E9%A2%98/</guid>
      <description>&lt;p&gt;自从TP升级为3.2.3升级后，默认对数据库字段进行全部小写化。官方是这么解释的：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;规范起见，默认的数据库驱动类设置了 字段名强制转换为小写，如果你的数据表字段名采用大小写混合方式的话，需要在配置文件中增加如下设置：&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;DB_PARAMS&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;\PDO&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;ATTR_CASE&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;\PDO&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;CASE_NATURAL&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>ThinkPHP里关于禁用客户端缓存的问题</title>
      <link>https://blog.foamzou.com/posts/thinkphp%E9%87%8C%E5%85%B3%E4%BA%8E%E7%A6%81%E7%94%A8%E5%AE%A2%E6%88%B7%E7%AB%AF%E7%BC%93%E5%AD%98%E7%9A%84%E9%97%AE%E9%A2%98/</link>
      <pubDate>Fri, 20 Mar 2015 17:25:36 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/thinkphp%E9%87%8C%E5%85%B3%E4%BA%8E%E7%A6%81%E7%94%A8%E5%AE%A2%E6%88%B7%E7%AB%AF%E7%BC%93%E5%AD%98%E7%9A%84%E9%97%AE%E9%A2%98/</guid>
      <description>&lt;p&gt;为了避免用户点击浏览器的后退按钮和前进按钮触发提交，导致重复数据。有一种方法可以设置header头中的Cache-control为no-cache和no-store。该属性默认是private的。&lt;/p&gt;
&lt;p&gt;Cache-directive&lt;/p&gt;
&lt;p&gt;说明&lt;/p&gt;
&lt;p&gt;public&lt;/p&gt;
&lt;p&gt;所有内容都将被缓存&lt;/p&gt;
&lt;p&gt;private&lt;/p&gt;
&lt;p&gt;内容只缓存到私有缓存中&lt;/p&gt;
&lt;p&gt;no-cache&lt;/p&gt;
&lt;p&gt;所有内容都不会被缓存&lt;/p&gt;
&lt;p&gt;no-store&lt;/p&gt;
&lt;p&gt;所有内容都不会被缓存到缓存或 Internet 临时文件中&lt;/p&gt;
&lt;p&gt;must-revalidation/proxy-revalidation&lt;/p&gt;
&lt;p&gt;如果缓存的内容失效，请求必须发送到服务器/代理以进行重新验证&lt;/p&gt;
&lt;p&gt;max-age=xxx (xxx is numeric)&lt;/p&gt;
&lt;p&gt;缓存的内容将在 xxx 秒后失效, 这个选项只在HTTP 1.1可用, 并如果和Last-Modified一起使用时, 优先级较高&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.ggseo.cn/blog/post/cache-control.html&#34;&gt;易点SEO随笔&lt;/a&gt;有一篇博客解释得很浅显： &lt;strong&gt;其作用根据不同的重新浏览方式分为以下几种情况：&lt;/strong&gt; 1.打开新窗口(_blank) private、no-cache、must-revalidate 再次访问服务器 Cache-control: max-age=5(表示当访问此网页后的5秒内再次访问不 会去服务器) 2.在地址栏回车 值为private或must-revalidate则只有第一次访问时会访问服务器，以后就不再访问。 值为no-cache，那么每次都会访问。 值为max-age，则在过期之前不会重复访问。 3.按后退按扭 值为private、must-revalidate、max-age，则不会重访问， 值为no-cache，则每次都重复访问 4.按刷新按扭 无论为何值，都会重复访问 ThinkPHP的view缓存机制里&lt;strong&gt;默认是使用private&lt;/strong&gt;的。 ThinkPHP\Library\Think\View.class.php第92行 &lt;a href=&#34;____20150320171945.png&#34;&gt;&lt;img alt=&#34;搜狗截图20150320171945&#34; loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/thinkphp%E9%87%8C%E5%85%B3%E4%BA%8E%E7%A6%81%E7%94%A8%E5%AE%A2%E6%88%B7%E7%AB%AF%E7%BC%93%E5%AD%98%E7%9A%84%E9%97%AE%E9%A2%98/____20150320171945-300x81.png&#34;&gt;&lt;/a&gt; 我使用的是TP3.2，可以在配置文件中设置该属性，就不需要注释该行代码了。 &amp;lsquo;HTTP_CACHE_CONTROL&amp;rsquo; =&amp;gt; &amp;rsquo;no-cache,no-store&amp;rsquo; 但是这么一来，整个项目的页面的Cache-control都是no-cache,no-store了。只针对某些页面设置为no-cache,no-store。有没有更灵活的处理方法呢？有时间再看看。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
