2014年12月26日星期五

微信公众号的投票功能

无论订阅号还是服务号都有这个功能;使用也是简单方便,如下图填写投票的相关选项设置即可:

weixin toupiao 1 weixin toupiao 2

2014年12月19日星期五

大陆人不熟悉的蒋介石轶事(转载)

民国61年(1972年)7月22日,蒋中正于台北中兴宾馆深度昏迷。侍从医官察觉蒋氏口中念念有词,声音十分微弱,医官立刻请值班的侍从副官翁元,耳朵贴近蒋氏嘴巴,仔细聆听他在说些什么。翁元仔细听了一两分钟后告诉医官,总统说的是:“反攻大陆……解救同胞……反攻大陆……救中国……反攻大陆……救中国……”
蒋中正,字介石(1887年10月31日-1975年4月5日),是中华民国政治家及军事家,字介石,幼名瑞元、谱名周泰、学名志清、后人尊称先总统蒋公。祖籍中国江苏宜兴,生于清代浙江省奉化(现属宁波市),逝世于台湾台北市士林官邸。他历任黄埔军校校长、国军总司令、国府主席、行政院院长、国民政府军事委员会委员长、特级上将、国民党总裁、国防最高委员会委员长、三民主义青年团团长、二战同盟国中国战区最高统帅、中华民国总统等职务,是中国建立共和政体以来第一个成功统一全中国,是同时统治过全中国的最高领导人。著名历史学家唐德刚认为:“蒋中正是我民族史上千年难得一遇之旷世豪杰、民族英雄。五千年来,率全民,御强寇,生死无悔,百折不挠,终将顽敌驱除,国土重光,我民族史中,尚无第二人也。”
辛亥革命首义时,杭州之仗11月5日打响,打前阵的是住在新华路上的奉化会馆中的敢死队,该会馆由蒋中正舅父出资。其敢死队队长正是刚从日本军校回国的蒋中正。敢死队员则是其同乡,奉化渔民。时年蒋公24岁,时名蒋志清。蒋中正在回国前照了一张绝命照寄给母亲,身殉革命的决心来杭州参加起义。母亲特遣专人回信,勖勉独子:“死生一视于义,毋以家事为念”。青年率领敢死队身先士卒猛攻浙江巡抚衙门,活捉巡抚曾韫,革命成功。此时蒋介石惹认为:怎样才能算个人?只有按忠孝仁爱信义和平原则做人的人才算个人!就是说,对社会、朋友、下属一定要忠实,对父母毕须要仁爱,对朋友及所有人要有信义,对任何人都要公平合理和平共同!而聚众成匪,惨无人道杀良善勤劳之人、夺其财,辱其父母妻儿,以盼不劳而获,这还能算是人吗!
1923年9月至11月间,孙中山派蒋中正为代表率团赴苏俄考察学习苏维埃体制的政治及军事系统。蒋发现苏俄对中国社会,强分阶级、讲求斗争,他对付革命友人的策略,反而比他对付革命敌人的策略为更多,苏维埃政治制度乃是专制和恐怖的组织,与我们中国国民党的三民主义的政治制度,是根本不能兼容的。
1924年6月16日,中华民国陆军军官学校(黄埔军校)校庆日。蒋中正任校长,校训“亲爱精诚”经由蒋亲自拟选。孙中山于黄埔军校之训词后成中华民国国歌:"三民主义,吾党所宗;以建民国,以进大同。咨尔多士,为民前锋;夙夜匪懈,主义是从。矢勤矢勇,必信必忠;一心一德,贯彻始终。"
1928年,国民党军重新北伐,却于济南横遭日本帝国的阻扰乃至侮辱。5月12日,蒋中正有日记云:“是日本军阀之祸国殃民,乃更甚于中国之军阀矣!毒蛇猛兽豢养不除,必至反噬其主人,惜乎日本民众犹未能醒悟耳!大为中日两国民众之前途长太息也。”其时蒋氏亦由仇英转而仇日,两国从此孽根深种,剑拔弩张。9.18事变四天之后,蒋中正“此刻暂且含忍,绝非屈服。如至国际信义条约一律无效,和平绝望,到忍耐无可忍耐,且不应该忍之最后地步,则中央已有最后的决心与最后之准备,届时必领导全国人民,宁为玉碎,以四万万人之力量,保卫我民族生存和国家人格”。
1932年2月,蒋介石提到“与倭持久作战,非如此不足以杀其自大之野心”,决定“准备长期抵抗,以求最后之胜利。”1938年3月5日,蒋介石在日记中写道:“我之对倭,在以广大之空间土地,求得时间持久之胜利;积各路之小胜,而成全局之大胜。”同年5月,毛泽东在延安完成了《论持久战》初稿。
西安事变中,蒋中正告全体国民书:“……我死之后,中华正气乃得不死,则中华民族终有继起复兴之一日。……惟望全国同胞对于中正平日所明告之信条: 一、明礼义;二、知廉耻;三、负责任;四、守纪律,人人严守而实行之,则中正虽死犹生中国虽危必安,勿望以中正个人之生死而有顾虑也……”
张学良在回忆录中多次提及:“我的事情就只到36岁,以后就没有了。回首一生,自问做了最错的事,就是在西安事变中,姑息了共产党。往后数十年,隔岸目睹中华民族尽历空前的苦难,最是羞悔”!1958年11月23日,蒋中正与张学良在台湾桃园大溪会面,蒋中正临走前说:“西安事变对国家的损失太大了!”张学良在日记中留下:“我闻之,甚为难过,低头不能仰视”。晚年张学良为此痛心疾首,自称民族罪人。
1937年7月7日,7.7事变。蒋中正于庐山发宣言,曰:“战事骤发,亦有策,必守之。吾国虽尚太平,然不求苟安,且延之,勿疾克。当知战事既开,势若覆水,请弃城下之约,同心守义,利可断金。是役也,地无分南北,人无分老幼,无论何人,皆有守土抗战之责,必死而后生。”1937年7月31日蒋中正“告抗战全体将士书”指出:“这几年来的忍耐,骂不还口,打不还手,我们为的是什么?为的要安定内部,完成统一,充实国力,到最后关头来抗战雪耻!现在既然和平绝望,只有抗战到底,那就必须举国一致,不惜牺牲来和倭寇死拼”。
淞沪会战是1937年8月13日起中国军队抗击日军进攻上海的战役,这场战役是中国抗日战争中第一场重要战役,规模大、战斗惨,历时3个月,日军投入30万余人,宣布死伤4万;中国军队投入75万,自己统计死伤30万;中国军民浴血苦战,粉碎了日本“三个月灭亡中国”的野心。为坚持抗战,争取了宝贵时间。
蒋中正在1937年11月11日“九国公约”电中明确声明:“中国军人从上海撤退,乃战略关系,且为长期抗战之计……此乃战略上必要之举,吾国政府与国民务当抗战到底,咸已具有决心,暴敌实无以动摇之”。蒋中正:“日本无持久作战的战略资源。只要能与日军周旋到某一程度,它若不是北侵西伯利亚,就是南下南洋群岛(印尼),引起苏俄或欧美对抗。……”1938年2月7日,蒋中正演讲:“我们这次抗战,是以广大的土地,来和敌人决胜负;是以众多的人口,来和敌人决生死。本来战争的胜负,就是决定于空间与时间。我们有了敌人一时无法全部占领的广大土地,就此空间的条件,已足以制胜侵略的敌人。”1938年7月18日,武汉会战正打得异常激烈之时,蒋中正曾对英《每日先驱论坛报》记者斯诺称:“纵令将来武汉有不能守之日,殊亦无损于抗战于毫末;中国之今日,固在长期作战以消耗敌人力量,而获得最后胜利。相信保卫武汉之战,必使敌遭受重大之损失也!”
七七事变后,正面战场上连续爆发淞沪、太原、徐州、武汉等重大战役,日本“三月亡华”的计划就此破产。
傅斯年任参政员时曾两次上书弹劾行政院长孔祥熙,蒋中正亲自宴请傅为孔说情。二人有过一段著名对话——蒋:你信任我吗?傅:我绝对信任。蒋:你既然信任我,那么就应该信任我所任用的人。傅:委员长我是信任的,至于说因为信任你也就该信任你所任用的人,那么砍掉我的脑袋我也不能这样说。蒋只好让孔下台。
1942年,圣雄甘地提出了英国“退出印度”的口号,准备发动第四次不合作运动,被英印政府逮捕。蒋介石多次呼吁和平和解。1944年,由于甘地绝食,生命垂危,蒋介石致电在美国的宋美龄,要她“面商罗斯福总统,从速设法切劝英国政府立即释放甘地先生,以确保联合国为民主、为人类作战之信念。”
1943年常德会战,张灵甫亲率突击队救援常德,迫使日军退出,被蒋中正誉为“模范军人”。张灵甫呈蒋介石的最后一电:职师与数倍之劲敌血战三昼夜,官兵伤亡殆尽,援军不至,无力再战,为不辱党国使命,抱定不成功即成仁之决心,发电后,职等集体自杀,以报校长知遇之恩。
由于受偏激的教育,现代中国大陆人认为是毛泽东废除了一切不平等条约。其实,历史的真相并不会永远被抹杀:1943年中华民国政府废除了自清政府以来签定的一切外国不平等条约——史称“43年条约”。蒋介石为此在1943年1月12日发表《告全国军民书》。
日寇侵占东北后,蒋中正立即写了遗嘱,决心献身为国,收复失土,并希望全国人民团结一致,共纾国难。
抗战期间,朱家骅等人决定向蒋介石献九鼎,铭文由刘起吁起草,顾颉刚定稿:“于维总裁,允文允武,亲仁善邻,罔或予侮。我士我工,载欣载舞,献兹九鼎,宝于万古。”蒋介石知道后,大骂朱家骅:“这是无耻!”“太糊涂,是侮辱我!”“这种作法,不仅给我侮辱,也给党侮辱,怎么对得起总理在天之灵?”蒋纬国说,蒋中正在抗战最艰难的那段时期,实在支撑不住了,就关上浴室门,怕家人听见,然后在浴盘里发出凄厉无助的哀号,蒋纬国说家里人还是能听见,心都快碎了。
抗战中的教育投入仅次于军费。蒋中正说:我们切不可忘记战时应作平时看,切勿为应急之故而丢却了基本,我们这一战,一方面是为争取民族生存,一方面就要于此时期改造我们的民族,复兴我们的国家,所以我们教育上的着眼点,不仅在战时,还应该看到战后。
“艰难革命成孤愤 挥剑长空泪纵横”,1949年12月10日,蒋介石含泪挥毫写下这句诗后,搭机离开成都,飞往台湾,永远离开了他为之奋斗几十年的大陆中国。这是他一生中最悲哀的时刻。
蒋经国曾这样回忆他随父亲告别溪口的情境:“极目四望,溪山无语”,当时“天气阴沉,益增伤痛。大好河山,几至无立锥之地!且溪口为祖宗庐墓所在,今日一旦抛别,其沉痛之心情,更非笔墨所能形容于万一。”
1948年12月初蒋中正命教育部长陈雪屏急飞北平,召集胡适等秘商“抢救学人”计划。蒋亲自指派飞机冒共军炮火飞北平南苑机场等候两天,仅胡适毛子水钱思亮英千里张佛泉梅贻琦李书华袁同礼杨武之等二三十人登机。据资料统计,国民政府中央研究院81位院士十几位随蒋赴台,其余六十余位羁留大陆,结果众知。
1949年5月27日,上海沦陷。著名物理学家吴有训在上海听到中央电台的一则寻找吴有训,让他去厦门的广播寻人启事。此前,吴有训拒绝了蒋中正邀他去台之请,在中共地下党的帮助下,由南京秘密转移到上海。1949年10月17日,厦门失守,这则广播寻人启事才停播,共播送了143天。寻找他的人叫蒋中正。
1949年10月1日中华人民共和国成立那一天,蒋介石仍在中国大陆。美国斯坦福大学胡佛研究院保管并向公众开放的《蒋介石日记》,记述了蒋介石在中国大陆坚守的最后日子。1945年8月15日抗战胜利,全国一片欢腾,蒋介石却高兴不起来。负责整理和研究《蒋介石日记》的斯坦福大学胡佛研究院华裔研究员郭岱君说:“8月13日他写道:‘未来艰巨,十倍于抗战。’为什么他有这个想法?因为这个时候他知道,林彪、彭德怀的部队已经开始行动了,内战即将开始,而且他觉得内战的复杂与艰困可能比抗日更甚。”郭岱君表示:整个国共内战,共产党对国军的作战部署了如指掌,国军几乎没打过胜仗,到1949年,全国败局已定。“1949年,蒋介石仓惶转战各地。我们在他的《日记》里看到,例如他说:‘愧悔无地自容,几无面目见世人。’‘只能戴罪补过,以求自赎。’”
1949年上海被解放军攻克前夕,蒋介石5月6日乘军舰离开上海。郭岱君说:“这艘船走得非常慢,在黄浦江出来后在沿海走来走去,不知去哪里。最后船停在舟山岛,也没有登岸。前后在海上漂泊十来天,真是乾坤万里,沧海茫茫,不知何处为家。你可以想他这种心情:他不愿意离开中国,也不愿意去台湾,更不愿意去外国。”
蒋介石1949年7月1日在台北设立了总裁办公室,12月8日才下令中央政府正式迁台。但从6月21日到12月10日,蒋介石留在大陆,指挥据守西南的国军作战。11月30日晚上10点,他离开重庆前往成都。郭岱君说:“这个时候解放军已经要进城了,他才匆匆忙忙从他的住所到飞机场去。兵荒马乱,他在路上三次下来要走路,因为汽车已经没有办法走了。他们在午夜才抵达机场,没有地方睡,就睡在飞机里面,一直等到第二天凌晨,解放军已经进城了,飞机才起飞。到哪里去呢?到成都。”
蒋介石是1949年12月10日从成都离开中国大陆的。郭岱君说:“起飞的时候,在成都上空绕了两圈,他眼泪流下来。这一次离开,他再也没能够回到中国大陆。”
郭岱君说:读完国共内战期间的《蒋介石日记》,人们可以发现,蒋介石对于国民政府失掉中国大陆的原因,有很深刻的反省,但却从来没有责骂共产党。郭岱君讲述了《蒋介石日记》向公众开放后的一件轶事:“前年10月,中国大陆有一位很重要的领导人悄悄地到胡佛来,他来看蒋介石日记,由中国驻美大使陪他来的,带了十几个人,都是部长。我就问他要看哪一段的日记?他说:‘我就看1949年的,我看他怎么写我们。’我就说:‘你会失望,他没有骂共产党,他都是批评他自己跟国民党。’那位先生认真看了一个多小时,看完之后不讲话。”
朝鲜战争时,美国曾考虑以原子弹对付中共,但蒋介石反对,因为不愿屠杀人民。1954年大陆严重水患,有人主张反攻大陆,但蒋认为黎民受苦之际,应以救灾为重,若趁机打仗则非仁义之师。1969年中俄发生珍宝岛冲突,苏联遣人与蒋联系,但蒋不愿做吴三桂,置之不理。
当大陆在进行文革的时候,蒋中正先生在台湾成立了“中华文化复兴运动推行委员会”并亲自挂帅,他说“中华文化是无人可以毁灭的”,“我们国父壹生致力于国民革命,原就是要把中华文化从根救起,再造壹庄严华丽之新中国。”
中印边境战争中,美国和苏联都支持印度。当时中华民国政府是国际承认的合法政府,很多国家敦促蒋介石承认麦克马洪线,以便配合国际上的反*共,谁知蒋发表声明说:“麦克马洪线是帝国主义强加给中国的,绝不承认麦克马洪线”,并在联合国一天一个抗议,宣示中国捍卫主权的决心。
研究蒋介石的学者杨天石说,“根据现有资料,蒋介石的日记约始于1915年,止于1972年,距离去世只有3年。”信奉儒学,尤其是宋明道学的蒋,用“存天理去人欲”的要求来约束自己。中正语录:政治比之于军事还要困难。因为干政治的要钻进污秽龌龊的社会里面去。
民国四十五年(1956年),蒋中正70华诞。“中央日报”征文为其祝寿,报社负责人胡健中给胡适打电报约稿,胡适写完寄来,并附信说——“我量你不敢登。这文章是希望总统无为而治,不要管太多事情”。胡健中请示蒋,蒋说“可以照登,让他去讲好了”!此文就一字不改的照登了。
1959年大陆大饥荒,蒋中正训示台湾“救总”拟定救济办法,号召台湾人民每人省下一元钱支援大陆。他呼吁各国敦促北京开放港口,又想通过国际红十字会向大陆提供10万吨粮食,北京断定是“反攻计划”,坚决不开放运送物资的港口。台湾又利用空飘、海飘向大陆放送各类物质……
蒋介石的一个积极遗产,是他在大陆破四旧与文革如火如荼时,在台湾发起了“中华文化复兴运动”。学校坚持民族教育和道德教育并重,须开设《生活与伦理》、《中国文化基本教材》等,重视古文训练和传统文化的熏陶。蒋给各个学校共同校训都是礼义廉耻。守护好文化的根基,社会才能“流淌着道德的血液”。
蒋介石是崇拜王阳明的超级粉丝,古代思想家学问家中,蒋最敬王守仁(王阳明)和曾国藩二人。蒋改名蒋中正,中正的名讳出处来自王阳明心学中的“大中至正 ”。蒋介石曾经三次到阳明洞参悟,败退台湾后他对王阳明的研究愈发痴迷,甚至把台湾草山改名为“阳明山”,要求儿子蒋经国苦学阳明心学。
蒋介石当上中华民国总统,就在老家扩建产业,左邻右舍纷纷搬走,但是千层饼店的小老板周顺民拒绝。他说:搬可以,让蒋介石自己来通知我,只要他说出道理来我就搬。有关部门将此事迅速上报,蒋介石叹息道:爱搬不搬,随他去吧……。周顺房饼店至今仍存紧抵着蒋宅。
1973年蒋的演讲:“中共必须面对另一强大挑战,就是中华文化坚韧不屈的生命力。中华文化代表人文主义最高光辉,历五千年而道益光,业益盛,即赖此一文化生命力为涵濡蕴蓄;此一源自人性-基于伦理的优美文化,构成了每个中国人精神深处无可改变的价值信仰。与共产主义崇尚仇恨暴力的邪恶本质绝不兼容。
蒋1974年说:“世界上绝对没有任何民族自绝其历史,自毁其文化,并不惜出死力以侮辱-诬蔑-反对其祖先的道德功业-文行忠信,而仍能厚颜无耻视息于天地之间者!今天毛所谓批孔扬秦,所谓敢于反潮流运动,就正是在向中华民族是非-善恶-忠奸-邪正的人伦基准挑战”!
据陶希圣描述,林彪死讯传到台北时,蒋中正曾为此而落泪。
中正剑,又叫军人魂、成仁剑、自杀剑、黄埔军魂、将军剑。中正剑是民国时期蒋介石赠给其黄埔学生、得力部将及有功人员的随身短剑,因为在其剑柄上刻有“蒋中正赠”字样,因此得名“中正剑”,进而成为一种荣耀的象征。
蒋中正书法,出入于颜柳欧间,骨气端正,无一笔苟且,甚至带有馆阁体的规矩法度,读之令人心生敬意。
1975年4月5日,蒋中正溘逝。秦孝仪为蒋代笔之遗嘱:“自余束发以来,即追随总理革命...建设民主宪政之国家,坚苦奋斗……实践三民主义,光复大陆国土,复兴民族文化,坚守民主阵容,为余毕生之志事……惟愿愈益坚此百忍,奋励自强,非达成国民革命之责任,绝不中止!矢勤矢勇,毋怠毋忽。”
国民党迁台后,有部分本省人恨之入骨,而做为国民党的长期领袖与精神象征,蒋中正更是承担了极大部分的责难。数十年来批判国民党与蒋个人的文字不计其数,综观之,引发这股仇恨的真正源起就是2.28事件。许多资料指出,在此之前,台人对于国民政府“如婴儿之望父母”;但是事件发生后,则“视之如寇雠”。两年后国民政府迁台,随即开展土地改革运动,更大大伤害了台湾的地主以及仕绅阶级,日后的反对运动有相当一部份就是由此而生。然而国民党的土地改革政策的收获,是许多得到田地的新生自耕农,对于国民党的感激之情。
在政治方面,由于国民党担心中共的渗透,在台湾长期实行戒严,压制民主要求,这也加深了台湾社会的反感。然而国民党在社会方面的一些政策,却使得这些仇恨愈积愈深,难以化解。其中最深刻者,就是禁止台语。终其一生,蒋中正所想的就是有朝一日得以反攻大陆,而台湾就是这一大战略的人力、财力与物力的主要来源。基于这种考量,他必需在台湾厚植大中国主义,所有有碍于此一战略的都必需压制,台语理所当然地就成了牺牲品。这件事情却也成为许多本省同胞积梗心中多年无法释怀的伤痛。
迨至台湾民主化后,所有这些因素都成为反对国民党的原因。
近几年由于政治因素,2.28事件所有责任都指向国民党,指向蒋中正,因而忽略了“台湾共产党”在事件中的角色。当然缉私烟事件与台共无关,是陈仪政府处理不当,连累长官蒋中正也必须负起连带责任。但“台共”利用事件所引发的民怨是不争的事实。台共首脑们于台中成立二七部队,后来被国军21师所歼灭,从这个角度看来,2.28事件也可以视为国共内战的一环,只是在过程中波及到许多无辜善良、包括外省人在内的台湾民众。
诚然,蒋中正对台湾曾带来了伤害,但他对台湾有着不可否认的贡献。
蒋中正到台湾时固然是战败之身,但是他反共之坚定恐怕亦难有超越者。有谓国民党来台是将国共斗争带到台湾来,其实以当时而言,如果国民党不来,来的就是共产党了。而且共产党在大陆所推行的一切暴政,诸如三反五反、社会主义改造、反右运动、大跃进乃至文化大革命等,台湾人恐怕都无从逃避。若然,则台湾不但尸横遍野,生活艰困,就更不会有后来的安居乐业与政治经济奇迹了。
其次,蒋本人读书虽有限,但是他极注重教育。来台后大力推动教育并推广中华文化,使得台湾在相当时间内被视为中华文化的承继者,这是值得后人肯定的。此外,台湾的教育普及而公平,并未因为省籍而有所差别,台湾社会日后各方面人才辈出,不能不说是教育政策的成效。第三点就是蒋中正对于经济建设的关注。从最初的土地改革、开发实业到后来的拓展外销,蒋虽然不是真正的决策人,但是他所任用的人才确实发挥了推动经济发展的效果。最后,蒋中正本人及其近臣都十分清廉,对当时的官箴以及整个社会风气,都起到了相当正面的作用。
蒋中正的一生历经革命、北伐、抗日、剿匪,大起大落,成败互见,原本就难用一两句话为其做评价。台湾经过多年努力,终于有幸成就民主政治。

2014年12月15日星期一

传智孙叔华Thinkphp3.2笔记 (1)



php框架


真实项目开发步骤:

1. 多人同时开发项目,协作开发项目、分工合理、效率有提高(代码风格不一样、分工不好)

2014年11月30日星期日

ThinkPHP3.1.3笔记

<?php
return array_merge($arr1,$arr2);//合并数组,合并后的数组以第二个数组名为名;
?>

自动加载函数库与扩展函数库定义、模板显视与模板替换配置项;
自定义p函数,格式化打印;
在/Commmon中建立common.php文件;写 代码
必须是common.php才能被认为是内部函数,可以自动加载;
<?php
function p($array){
dump($array,1,'<pre>',0);

}
?>
如果想自动加载common以外的函数,需要在config.php中定义一个选项:
<?php
$config=array(
'LOAD_EXT_FILE'=>'function',
)
return array_merge(include './Conf/config.php',$config);
?>

使用$this->display();调用模版;
模版放在当前项目的TPL目录下;
模版名必须以方法名称命名;放在相应的控制器目录下;
CSS,js,图片放在根目录下public目录内;
__PUBLIC__表示public目录;例:
<script type="text/javascript" src='__PUBLIC__/jquery1.3.js'></script>

更改__PUBLIC__地址:
在配置文件中添加一个选项;
'TMPL_parse_string'=>array(
'__PUBLIC__'=>__ROOT__.'/'.APP_NAME.'Tpl/Public',
),
即把__PUBLIC映射到根目录下的项目文件夹内的TPL/Public;

U函数的使用:详见手册!!
U();生成URL地址;
echo U('Index/index',array('uid'=>1,'username'=>'admin')); //程序会加上伪静态后缀;后面的array可选,用来传递参数;
//在入口文件index.php后加上Index/index/uid/1/username/admin.html

配置文件中配置伪静态后缀;
'URL_HTML_SUFFIX'=>'.html',
display()函数,默认取方法的名称再加上一个.html;得到模版名;
如果要指定模版,可以给display()加上一个参数即可;如:
display('wish');//不需要加上.html;

如果后缀名不是.html,那么需要修改配置文件;
'TMPL_TEMPLATE_SUFFIX'=>'.htm';

I函数自动获取$_GET或$_POST的参数;
如:echo I('uid');
<?php
print_r(I('post.'));
print_r(I('get.'));
?>

第9课-应用分组部署及共用项与独立项详解

应用分组可以让前后台共用配置、函数等:
index.php

<?php
define ('APP_NAME','App');
define ('APP_PATH','./App/');
define ('APP_DEBUG',TURE);
require '/ThinkPHP/ThinkPHP.php';
?>

config.php
<?php
return array(
'APP_GROUP_LIST'=>'Index,Admin',
'DEFALUT_GROUP'=>'Index',
//需要在Lib/Action下建立每个项目对应的文件夹;再建立相应的控制器;
//如 IndexAction.class.php,
//AdminAction.class.php
);
//在Conf目录下建立项目文件夹,再建立config.php文件为项目私有的配置文件;
//分别在Common目录下都分别建立项目文件夹,再建立function.php 为项目各自私用的函数文件;
//TPL模版文件夹下也要分别建立项目文件夹,如Admin,Index;
?>

第10课 判断是否Ajax提交与错误页面定制

异步处理ajax;
在模版中使用javascript定义一个全局变量,然后给JS中使用;
<script>
var handleUrl='{:U("Index/Index/handle",'','')}'
//
</script>
js代码:
$('$send-btn').click(function){
var username=$('input[name=username]').val();
var content=$('textarea[name=content]').val();

if (username==''){
alert('usernmae not null');
username.focus();
return;
}
if(content.val()==''){
alert('content not found');
content.focus();
return;

}
//开始异步
$.post(handleUrl,{username:username.val(),content:content.val()}.function(data){
if(data.status){
var str='<dl class="paper a1"';
str +='<dt><span class="username">'+data.usernae='</span>';
str +='<span class="num">'+data.id+'</span>';
str +='</dt><dd class="content">'+data.content+'</dd>';
str +='<dd class="bottom">;
str+=<span class="time">'+
data.time +'</span>';
str+='<a href="" class=""close""></a></dd></dl>';
$('#main').append(str); //添加str到HTML文件ID为main的结构后面;
$('#close').click(); //关闭发布窗口;
}else{
alert('publish faild');
}
} ;

在IndexAction.class.php中写入;
<?php
Public function handle(){
echo (I('post.')); //输出I函数获取的post数据;同样有I('get.')

//下面是判断是否异步
Public function handle(){
if(!IS_AJAX) halt('page not found');
echo I('post.');
}
?>

定制前台错误页面halt错误;
Conf/Index/config.php
<?php
return array(
'TMPL_EXCEPTION_FILE'=>'./Public/Tpl/error.html'
)
?>
然后可以在模板中这样输出
<?php echo $e['message'];?>

第11课F函数的使用与ajaxReturn方法
使用jquery来异步?

在配置文件中加入默认过滤函数:
<?php
return array(
'DEFAULT_FILTER'=>'htmlspecialchars',
)

IndexAction.class.php中的代码;
<?php
Public function index(){
$wish=M('wish')->select();
$this->assign('wish',$wish)->display();

}

Public function handle(){
if(!IS_AJAX) halt('page not found');
$data=array(
'username'=>I('username'),
'content'=>I('content'),
'time'=>time(),
);

if(M('wish')->data($data)->add()){
$data['id']=$id;
$data['content']=replace_phiz($data['content']);
$data['time']=date('y-m-d H:i',$data['time']);
$data['status']=1;
$this->ajaxReturn($data,'json');
}else{
$this->ajaxReturn(array('status'=>0),'json');
}
//替换表情:定义数组,
$phiz=array(
'zhuakuang'=>'抓狂',
'baobao'=>'抱抱',
'kaixin'=>'开心',
);
$phiz=F('phiz', $phiz,'./Data/');
//F方法生成文件(这里是用数组生成), 用来做缓存的? 看看手册;
//查看一下file_put_content(),var_export()函数,

$phiz=F('phiz','','./Data/');//读文件;读/data/phiz.php;

//表情替换的函数,可以放在comon.php中
//如下:
function replace_phiz($content){
preg_match_all('/\[.*?\]/is',$content,$arr);
if($arr[0]){
$phiz=F('phiz','','/Data/')
foreach($arr[0] as $v){
foreach($phiz as $key => $value){
if($v=='['.$value.']'){
$content=str_replace($v,'<img src="'.__ROOT__'/Public/Image/phiz/'.$key.'.gif"/>',$content);

}
continue;
}
}
}
return $content;
}
}
?>

2014年11月17日星期一

SXBK Gravatar 头像都要被墙

因为工作和身份的原因,最近都好少更新博客和网站,前几天就发现在头像打不开,也没有在意,心想可能是服务器的原因吧,过段时间就好了。。。
结果不曾想居然是被伟大的GFW给墙了。。。还好找到了一个简单的方法,用gravatar的朋友不妨试一下:

方法来自:http://fatesinger.com/74030

https还是没被墙的,而且速度还不错,直接调用这个最简单了。

如果你的网站启用了ssl则不需要了,否则functions.php 加入如下代码

function get_ssl_avatar($avatar) {
$avatar = preg_replace('/.*\/avatar\/(.*)\?s=([\d]+)&.*/','<img src="https://secure.gravatar.com/avatar/$1?s=$2" class="avatar avatar-$2" height="$2" width="$2">',$avatar);
return $avatar;
}
add_filter('get_avatar', 'get_ssl_avatar');

2014年10月31日星期五

SQL Server附加数据库失败,错误5120的解决方法之一

在SQL Server 上附加数据库时收到错误提示
无法打开物理文件XXX,操作系统错误5(拒绝访问),SQL Server 错误5120

解决办法一(已验证):

登陆sqlserver时使用“windows身份验证”登陆,即可正常附加数据库;

解决办法二(未验证):

从其他机子拷贝过来mdf文件附加到本机的sql server 里面,附加的时候提示错误,无法打开文件,错误5102,原因是权限不够,选择要附加的数据库文件,右击属性--安全--编辑 ,给认证用户赋予完全控制的权限 就可以了

2014年10月28日星期二

如何将frm、MYD、MYI格式的文件导入MySQL中

在使用虚拟服务器时,服务器提供商一般不会像我们使用本地数据库一样:使用导入导出(这样的文件后缀是*.sql)。大部分时候提供的是一个文件夹,里面包括:数据库名文件夹,文件夹里包括,*.frm,*.MYI,*.MYD,并且包含一个db.opt文件。分别介绍一下:
*.frm----描述了表的结构
*.MYI----表的索引
*.myd----保存了表的数据记录
db.opt----用文本编辑器打开,可以看到里面保存的是编码信息;

frm,myd,myi是属于MySQL存储数据的文件,phpMyAdmin是无法导入的。

phpMyAdmin支持的文件格式为sql文件。

其实很简单:

1.找到你的mysql的安装目录下的data文件夹,新建一个文件夹,文件夹的名称是你想设计的库的名称,把这些文件放到此文件夹中。

2.接着你就可以用你的管理mysql的工具看看这表里到底是什么内容。

frm格式 MYD格式MYI格式的文件是mysql用来存放表的文件,所以只能放到mysql的安装目录的data目录下

而且如果你是要传到空间上的话,基本上是无法恢复了,除非你把这些数据给空间商要他帮你恢复。

2014年10月25日星期六

Win7远程桌面连接设置关键点

办公室电脑Win7重装后远程桌面老是连接失败,摸索了好一阵子终于搞定,几个关键点:

1、常规设置:

鼠标右键单击“计算机”图标,选择“属性”,在打开的“系统”窗口点击“远程设置”,在弹出的系统属性中的的“远程”选项窗口中选择“允许远程协助连接这台计算机”和“允许运行任意版本远程桌面的计算机连接(较不安全)”,如下图:
win7 remote 1

2、 如果第1点设置完后其他电脑不能远程过来,首先要看看能否ping通该电脑,如果Ping不通,可按以下步骤调整Win7防火墙设置:

开始——控制面板——Windows防火墙——高级设置——入站规则,然后在中间“入站规则”窗口

中找到“
文件和打印机共享(回显请求 - ICMPv4-In) “规则(可能会有两条),选中后在右框中点击“启用规则”即可,如下图:
win7 remote 2

3、完成第2步后,正常应该可以Ping通了,如果还是不能远程连接过来,最后还要检查一下WIN7的Remote Desktop Services服务是否已经打开,如果没打开是连不上的,设置步骤:

右击“计算机”——管理——服务和应用程序——服务,在中间“服务”窗口中找到“Remote Desktop Services”服务,启动它即可。

4、(20120423补充)前几天远程桌面突然不行了,检查以上三步设置都正常,但就是连接不上,摸索一番发现还是windows防火墙设置出了问题,需启用入站规则中的“远程桌面(TCP-In)”规则:

开始——控制面板——Windows防火墙——高级设置——入站规则,然后在中间“入站规则”窗口中找到“
远程桌面(TCP-In)“  (可能会有配置文件为“公用”、“域、专用”两条规则) 规则,选中后在右框中点击“启用规则”即可。

 

完成以上几步后,其他电脑应该就可以远程过来了。

SQL 数据库还原错误‘媒体集有2个媒体簇 但只提供了1个’的解决办法

restore error

这是由于你备份时,没有去掉默认的C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\backup.bak,而又添加了一个新路径,结果是备份成了两份,但它们之间彼此依赖,你是没办法恢复成功的。以后注意点,记得备份时清空原来的路径,再添加自己想要备份的路径,这样就不会出现这个问题了。

2014年10月7日星期二

转:是进是退,给自己个说法

有一男子,他哥哥不在家,嫂子在洗澡.

于是该男子推开浴室的门冲了进去.
嫂子大怒:”你这样做,对得起你的哥哥吗?”

男子惭愧,随即转身欲出.
嫂子嗔怒:”你这样做,对得起我吗?”

男子一愣,站在原地,一时无措.
嫂子假怒:”即不出去,也不进来,就这样站着,你对得起自己吗?

看完了吗?,笑了吗?
等等! 如果只是笑笑过去,太对不起这个故事了.

我是要告诉你:
1:无论做什么样的选择,都不能让所有人满意.
朋友借钱,不借,伤朋友;借了,伤家庭和睦; 犹豫中,增自己烦恼.
拿个决定吧,借不借,都不是错.

经理要实行KPI考核,员工不满意; 不考核,老板不满意;犹豫中,增自己烦恼.
下决定吧,考核不考核,都不是错.

想做一个农民,父母不满意;来当一个it民工,自己不满意…..
当你想让各方面都满意,最终发现自己变的不是自己,像个专为其他人委屈求全的面具.

下个决定吧,为自己,follow your heart!

2:是进是退,要给自己个说法,千万不要犹豫不决.
人生的很多时间,其实是浪费在进退不定的犹豫中.

你来上大学,却抱怨学校不好,老师混蛋,不努力学习—这叫”不进”,
让你退学,去做自己感兴趣的事,你又没胆—这叫”不退”.
不进不退中,4年过去,青春空耗!徒留遗憾!
是进是退,你得给自己个说法呀!

你找工作时简历想要报价10000,但自信不够,虚汗直流,这叫”不进”,
让你报5000,又不甘心,带着怨气去面试,结果自然不必说. 这叫”不退”.
是进是退,你得给自己个说法呀!

来学习编程,上课睡觉,下课不会,再瞪着代码呕气,这叫”不进”,
让你重修一个月,又觉得没面子,死活不干,这叫”不退”.
是进是退,你别像个傻B是的楞在那儿呀!

原文地址:http://www.yanshiba.com/archives/461

看了这个文章,觉得自己之所以混得这么差就是一直犹豫不决,不知进退~~~~要怎么改变这个局面呢?

2014年9月24日星期三

十谷健康粥

材料:

糙米、黑糯米、小米、小麦、荞麦、芡实、燕麦、莲子、麦片和红薏仁等分量混合而成。以上十种,可同时煮熟。

作法1:

晚上时,将十谷米一杯用水洗净,加水七杯,放入闷烧锅内锅中烧开再煮十五分钟,放入外锅中加盖,翌日早晨上班前即可食用。可多煮一点,供三四天食用。

作法2:

晚上时,将十谷米三杯泡水4小时,放入电饭锅中,再加水5杯煮成干饭,待冷却后,放入冰箱。翌日早晨上班前,取酌量加水四杯煮成稀饭。

备注:

小孩子若因口感不喜欢吃时,可加入几粒龙眼干或葡萄干。风味绝佳,记忆超强,功课一级棒。

2014年9月9日星期二

解决百度云盘分享–审核失败问题

在百度云盘中分享文件或者文件夹时经常会遇到“审核失败”的场景,这是由于百度对文件审核加强了文件名称中的部分字符命中了敏感词汇。如果是文件夹的话,文件夹中的部分文件名称中包含敏感词同样会有这种情况
解决方案:
文件–>修改文件名
文件夹–>新建个文件夹,先共享这个空的文件夹,去看一下自己的共享,应该是没有审核失败,然后把不能共享的东西丢进去,就可以通过那个文件夹来共享了(如果是先放入文件夹,再共享文件夹也是没用的)

2014年9月5日星期五

Android 安卓手机如何设置固定IP ( 静态IP )

有时候需要为手机设置静态 IP 地址,Android 安卓手机如何设置固定IP ( 静态IP )?下面介绍一下安卓手机的具体的操作方法。

1、首先找到手机上的“设置”图标,点击进入。

android-an-zhuo-shou-ji-ru-he-she-zhi-gu-ding-ip-jing-tai-ip 1

2、找到“无线与网络”选项,点击进入,寻找“WLAN",点击,打开"WLAN"。

android-an-zhuo-shou-ji-ru-he-she-zhi-gu-ding-ip-jing-tai-ip 2

android-an-zhuo-shou-ji-ru-he-she-zhi-gu-ding-ip-jing-tai-ip 3

3、找到选择接入的无线网路,点击后出现连接界面,选择”显示高级选项“。

android-an-zhuo-shou-ji-ru-he-she-zhi-gu-ding-ip-jing-tai-ip 4

4、看到手机"IP 设置”当前选择DHCP选项。点击下拉箭头,选择“静态”选项。然后根据自己需要输入相应的IP地址信息:IP地址、子网掩码、路由器/网关、DNS。

android-an-zhuo-shou-ji-ru-he-she-zhi-gu-ding-ip-jing-tai-ip 5

5、不同系统的界面多多少少有些不同,安卓系统设置固定IP地址的界面大同小异,但别忘了输入无线网络的密码哦。

android-an-zhuo-shou-ji-ru-he-she-zhi-gu-ding-ip-jing-tai-ip 6android-an-zhuo-shou-ji-ru-he-she-zhi-gu-ding-ip-jing-tai-ip 6-1

2014年8月29日星期五

如何变得大气

问:如何变得大气?

答:和人相处上有时不要太追究细节,也别自寻烦恼,通常比较敏感的人都让人觉得不够大气,所以别想太多,只要自己做的没错就别太过于考虑别人的感受而忽视了自己的需求

答:当你因为一件小事不高兴时,想想自己为什么要不高兴呢,为什么要生气呢?然后再想想为这样一件事生气值得吗。想完了就没气了,有时候还会把不高兴变高兴呢!

答:当你因为一件小事不高兴时,想想自己为什么要不高兴呢,为什么要生气呢?然后再想想为这样一件事生气值得吗。想完了就没气了,有时候还会把不高兴变高兴呢!

答:不小气呗,凡事想开点,或者干脆不去想,对别人要求要放到最低,对自己要求放到最高

答:我觉得一个东西不在乎它的话,对待它的时候就不会小气。越在乎一件事情,就越发会显得小气。

答:你必须改 主动去跟朋友说话 不必要太过介怀 其实很多事说开了就什么事都没有了 大家也不会一直放在心上的 你也只是自尊心作祟 不要太好强

2014年8月28日星期四

高洛峰-PHP面向对象笔记

面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计);

类是具有相同属性和服务的一组对象的集合。

它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分;在面向对象的编程语言中;

类是一个独立的程序单位,它应该有一个类名并包括属性说明和服务说明两个主要部分;


对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。

类与对象的关系就如模具和铸件的关系,类的实例化结果就是对象,而对一类对象的抽象就是类。


打个比方:清单就是类,清单里面的东西是对象,把东西买回来就是实例化对象;



类的定义:

class 类名{

}




比如说,一个人就是一个对象,你怎么把一个你看好的人推荐给你们领导呢?当然是越详细越好了:

首先,你会介绍这个人姓名、性别、年龄、身高、体重、电话、家庭住址等等。

然后,你要介绍这个人能做什么,可以开车,会说英语,可以使用电脑等等。



属性,像上面我们看到的,人的姓名、性别、年龄、身高、体重、电话、家庭住址等等;


动态上也就是人的这个对象的功能,比如这个人可以开车,会说英语,可以使用电脑等等,抽象成程序时,

我们把动态的写成函数或者说是方法;




class 人{

成员属性:姓名、性别、年龄、身高、体重、电话、家庭住址

成员方法:可以开车, 会说英语, 可以使用电脑

}



通过在类定义中使用关键字" var"来声明变量


<?php

class Person

{

//下面是人的成员属性

var $name//人的名字

var $sex//人的性别

var $age//人的年龄

//下面是人的成员方法

function say() //这个人可以说话的方法

{

echo "这个人在说话";

}

function run() //这个人可以走路的方法

{

echo "这个人在走路";

}

}

$p1=new Person();

$p2=new Person();

$p3=new Person();

//下面三行是给$p1对象属性赋值

$p1->name="张三";

$p1->sex="男";

$p1->age=20;

//下面三行是访问$p1对象的属性

echo "this is p1's name".$p1->name."<br>";

echo "p1 is a ".$p1->sex."<br>";

echo "p1 ".$p1->age."'s old.<br>";

//下面两行访问$p1对象中的方法

$p1->say();

$p1->run();

?>


 

“$this”的使用


<?php

class Person

{

//下面是人的成员属性

var $name//人的名字

var $sex//人的性别

var $age//人的年龄

//下面是人的成员方法

function say() //这个人可以说话的方法

{

echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是:

".$this->age."<br>";

}

function run() //这个人可以走路的方法

{

echo "这个人在走路";

}

}

$p1=new Person(); //创建实例对象$p1

$p2=new Person(); //创建实例对象$p2

$p3=new Person(); //创建实例对象$p3

//下面三行是给$p1对象属性赋值

$p1->name="张三";

$p1->sex="男";

$p1->age=20;

//下面访问$p1对象中的说话方法

$p1->say();

?>  




构造方法与析构方法

通常用 构造方法 执行一些有用的初始化任务。


比如对成属性在创建对象的时候赋初值。

通过构造方法后实例化和赋值同时完成;

析构函数允许在销毁一个类之前执行的一些操作或完成一些功能,比如说关闭文件,释放结果集等;



<?

//创建一个人类

class Person

{

//下面是人的成员属性

var $name;//人的名字

var $sex;//人的性别

var $age;//人的年龄

//定义一个构造方法参数为姓名$name、性别$sex和年龄$age

function __construct($name, $sex, $age)

{

//通过构造方法传进来的$name给成员属性$this->name赋初使值

$this->name=$name;

//通过构造方法传进来的$sex给成员属性$this->sex赋初使值

$this->sex=$sex;

//通过构造方法传进来的$age给成员属性$this->age赋初使值

$this->age=$age;

}

//这个人的说话方法

function say()

{

echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是:

".$this->age."<br>";

}

//这是一个析构函数,在对象销毁前调用

function __destruct(){

    echo "bye bye ".$this->name."<br>";

}

}

//通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄

$p1=new Person("貂蝉""女""23");

$p2=new Person("吕布""男""26");

//下面访问$p1对象中的说话方法

$p1->say();

//下面访问$p2对象中的说话方法

$p2->say();

?>




封装性


封装性就是把对象的属性和服务结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节

包含两个含义:1.把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象)。

2.信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成一个边界〔或者说形成一道屏障〕,只保留有限的对外接口使之与外部发生联系。



比如某个人的对象中有年龄和工资等属性,像这样个人隐私的属性是不想让其它人随意就能获得到的;


再比如说,个人电脑都有一个密码,不想让其它人随意的登陆,在你的电脑里面拷贝和粘贴。

还有就是像人这个对象,身高和年龄的属性,只能是自己来增长,不可以让别人随意的赋值等等。

使用 private 这个关键字来对属性和方法进行封装:




<?php 

class Person

{

//下面是人的成员属性

private $name//人的名字,被private封装上了

private $sex//人的性别, 被private封装上了

private $age//人的年龄, 被private封装上了

//这个人可以说话的方法

function say()

{

echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是:

".$this->age."<br>";

}

//这个人可以走路的方法, 被private封装上了

private function run()

{

echo "这个人在走路";

}

}

//实例化一个人的实例对象

$p1=new Person();

//以下给private的属性或方法 赋值,调用的任何操作都会报错;  

//试图去给私有的属性赋值, 结果会发生错误

$p1->name="张三";

$p1->sex="男";

$p1->age=20;

//试图去打印私有的属性, 结果会发生错误

echo $p1->name."<br>";

//试图去打印私有的成员方法, 结果会发生错误

$p1->run();

?>


1


 

这个时候就只能访问公用的这个say()方法,而不能调用private的$name,$age,$sex属性了;


如果强行加上 echo $p1->name; 就会出现如下fatal error; 访问private function

2 3

所以私有成员只能在本对象内部自己访问

构造方法是默认的公有方法,所以可以用构造方法给私有的属性赋初值。

 


<?php 

class Person

{

//下面是人的成员属性

private $name//人的名字,被private封装上了

private $sex//人的性别, 被private封装上了

private $age//人的年龄, 被private封装上了

function __construct($name,$sex,$age){

    $this->name=$name; 

    //通过构造方法传进来的$name给私有成员属性$this->name赋初使值;

    $this->sex=$sex;

    $this->age=$age;    

}

//这个人可以说话的方法

function say()

{

echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是:

".$this->age."<br>";

}

//这个人可以走路的方法, 被private封装上了

private function run()

{

echo "这个人在走路";

}

}

//实例化一个人的实例对象

$p1=new Person("feng""male""32");

echo $p1->say();

//可以通过构造方法的参数传递来访问私有数据;但还是不能直接访问private;

//就是私有的成员只能在类的内部使用

?>


接口,可以为私有属性在类外部提供设置方法和获取方法,来操作私有属性;

 

__set() __get() __isset() __unset()四个方法的应用

 


“__set()”和“__get()”这两个方法,这两个方法不是默认存在的,而是我们手
工添加到类里面去的,像构造方法(__construct())一样, 类里面添加了才会存在;




__get()方法:这个方法用来获取私有成员属性值的;

__get()只有一个参数,参数传入你要获取的成员属性的名称,返回获取的属性值。

__set()方法:这个方法用来为私有成员属性设置值的;

__set()有两个参数,第一个参数为你要为设置值的属性名,第二个参数是要给属性设置的值,没有返回值。



<?php

class Person

{

//下面是人的成员属性, 都是封装的私有成员

private $name//人的名字

private $sex//人的性别

private $age//人的年龄

//__get()方法用来获取私有属性

private function __get($property_name)

{

echo "在直接获取私有属性值的时候,自动调用了这个__get()方法<br>";

if(isset($this->$property_name))

{

return($this->$property_name);

}

else

{

    return(NULL);

}

}

//__set()方法用来设置私有属性

private function __set($property_name, $value)

{

echo "在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值<br>";

$this->$property_name = $value;

}

}

$p1=new Person();

//直接为私有属性赋值的操作, 会自动调用__set()方法进行赋值

$p1->name="张三";

$p1->sex="男";

$p1->age=20;

//直接获取私有属性的值, 会自动调用__get()方法,返回成员属性的值

echo "姓名:".$p1->name."<br>";

echo "性别:".$p1->sex."<br>";

echo "年龄:".$p1->age."<br>";

?>



类的继承

 


<?php

class person{

    var $name;

    var $sex;

    var $age;


    function __construct($name,$sex,$age){

        $this->age=$age;

        $this->name=$name;

        $this->sex=$sex;        

    }

    function say(){

        echo "my name is ".$this->name." ".$this->age."years old "."i am a ".$this->sex."<br>";

    }    

}

//定义一个子类“学生类“使用”extends”关键字来继承”人”类

class student extends person{

    var $school;

    function study(){

        echo "my name is ".$this->name."i am learning at ".$this->school."<br>";

    }

}


?>  



 

重载新的方法

 

重载新的方法就是子类覆盖父类的已有的方法,那为什么要这么做呢?


因为继承过来的方法需要扩展,然后使用;继承过来的属性、方法不能被删除;


 PHP 里面不能定义同名的方法, 但是在父子关系的两个类中,我们可以在子类中定义和父类同名的方法,这样就把父类中继承过来的方法覆盖掉了。


<?php

class person{

    var $name;

    var $sex;

    var $age;


    function __construct($name,$sex,$age){

        $this->age=$age;

        $this->name=$name;

        $this->sex=$sex;        

    }

    function say(){

        echo "my name is ".$this->name." ".$this->age."years old "."i am a ".$this->sex."<br>";

    }

    

}

//定义一个子类“学生类“使用”extends”关键字来继承”人”类

class student extends person{

    var $school;

//重载say方法;

function say(){

    parent::say();


    //使用父类的“类名::“来调用父类中被覆盖的方法;

    //或者使用“parent::”的方试来调用父类中被覆盖的方法;  



    //尽可能的使用parent方式来调用,以便以后的修改;

    echo "通过parent扩展这个继承的方法,";

}

    function study(){

        echo "my name is ".$this->name."i am learning at ".$this->school."<br>";

    }

}

$p1=new student("张三","male","23","xiaoxue");

echo $p1->age."<br>";

echo $p1->name."<br>";

echo $p1->sex."<br>";

echo $p1->say();

?>



访问类型


PHP5 支持如下 3 种访问修饰符:

public(公有的、默认的),

private(私有的)

protected(受保护的)


4


final 关键字的应用

 

使用 final 关键标记的方法不能被子类覆盖,是最终版本;

这个关键字只能用来定义类和定义方法,不能使用 final 这个关键字来定义成员属性


static 和 const 关键字的使用



static 成员能够限制外部的访问,因为static 的成员是属于类的,是不属于任何对象实例,是在类第一次被加载的时候分配的空间,其他

类是无法访问的,只对类的实例共享,能一定程度对类该成员形成保护。


类的静态变量,非常类似全局变量,能够被所有类的实例共享,类的静态方法也是一样的,类似于全局函数。


<?php 

class person{

    public static $mycountry='usa '//静态属性

    public static function say(){

        //静态方法

        echo "i love usa ,i have a american dram!";

    }

public static function say2(){


//在静态方法里,可以使用这个方法所在的类的“类名”,也可以使用“self”来访问其它静态成员,

//如果没有特殊情况的话,我们通常使用后者,即“self::成员属性”的方式。


    echo "i love ".self::$mycountry;

}


}

//输出静态属性和方法;

//静态成员是在类第一次加载的时候就创建的,所以在类的外部不需要对象而使用类名就可以访问的到静态的成员;

//使用对象访问不到静态成员的; 就是说实化后不能通过$p1->mycontury这种形式访问这个静态成员;

echo person::$mycountry;

person::say();

//给静态属性重新赋值;

person::$mycountry="china";

echo person::$mycountry;

echo person::say2();

?>



const 是一个定义常量的关键字

 

在 PHP 中定义常量使用的是“define()”这个函数,但是在类里面定义常量使用的是“const”这个关键字;


<?php

class MyClass

{

//定义一个常量 constant

const constant = 'constant value';

function showConstant() {

echo self::constant . "\n"//使用 self 访问,不要加”$”

}

}

echo MyClass::constant . "\n"//使用类名来访问,也不加”$”

$class = new MyClass();

$class->showConstant();

// echo $class::constant; 是不允许的

?>  



__toString()方法

 


在类里面声明“__”开始的方法名的方法(PHP 给我们提供的),都是在某一时刻不同情况下自动调用执行的方法;

“__toString()”方法也是一样自动被调用的,是在直接输出对象引用时自动调用的,


 


<?php

// Declare a simple class

class TestClass

{

public $foo;

public function __construct($foo) {

$this->foo = $foo;

}

//定义一个__toString方法,返加一个成员属性$foo

public function __toString() {

return $this->foo;

}

}

$class = new TestClass('Hello');

//直接输出对象

echo $class;

?>  



 

克隆对象

 


需要在一个项目里面,使用两个或多个一样的对象,如果你使用“new”关键字重新创建对象的话,再赋值上相同的属性,这样做比较烦琐而且也容易出错,所以要根据一个对象完全克隆出一个一模一样的对象,是非常有必要的,而且克隆以后,两个对象互不干扰。




<?php

class Person

{

//下面是人的成员属性

var $name//人的名字

var $sex;

//人的性别

var $age;

//人的年龄

//定义一个构造方法参数为属性姓名$name、性别$sex 和年龄$age 进行赋值


function __construct($name="", $sex="", $age="")

{

$this->name=$name;

$this->sex=$sex;

$this->age=$age;

}

//这个人可以说话的方法, 说出自己的属性

function say()

{

echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>";

}

//对象克隆时自动调用的方法, 如果想在克隆后改变原对象的内容,需要在__clone()中重写原本的属性和方法

function __clone()

{

//$this 指的复本 p2, 而$that 是指向原本 p1,这样就在本方法里,改变了复本的属性。

$this->name="我是假的";

$this->age=30;

}

}

$p1=new Person("张三","男", 20);

$p2=clone $p1;

$p1->say();

$p2->say();

?>  




__call 处理调用错误


如果调用对象不存在的内部方法时候,程序会退出不能继续执行。

__call可以在程序调用对象内部不存在的方法时,提示我们调用的方法及使用的参数不存在,且程序还可以继续执行;


 


<?php

//这是一个测试的类,里面没有属性和方法

class Test

{

//调用不存的方法时自动调用的方法,第一个参数为方法名,第二个参数是数组参数;

function __call($function_name, $args)

{

print "你所调用的函数:$function_name(参数:";

print_r($args);

print ")不存在!<br>\n";

}

}

//产生一个Test类的对象

$test=new Test();

//调用对象里不存在的方法

$test->demo("one""two""three");

//程序不会退出可以执行到这里

echo "this is a test<br>";

?>



抽象方法和抽象类


抽象方法就是为了方便继承而引入的;

只要一个类里面有一个方法是抽象方法;

抽象类不能产生实例对象,所以也不能直接使用;


我们是将抽象方法是作为子类重载的模板使用的,定义抽象类就相当于定义了一种规范,这种规范要求子类去遵守,子类继承抽象类之后,把抽象类里面的抽象方法按照子类的需要实现。


子类必须把父类中的抽象方法全部都实现,

否则子类中还存在抽象方法,那么子类还是抽象类,还是不能实例化;


 

php5 接口技术

 

PHP 引入接口是为了解决不支持多重继承;

接口的思想是指定了一个实现了该接口的类必须实现的一系列方法。


接口里面所有的方法必须都是声明为抽象方法,另外接口里面不能声明变量,

而且接口里面所有的成员都是 public 权限的。所以子类在实现的时候也一定要使用 public 权限实限。


我们定义一个接口的子类去实现接口中全部抽象方法使用的关键字是“implements”,而不是我们前面所说的“extends”;


接口就是全都是公用的 public的 ,拿来调用的,可不可以这样说?

父类是一个接口,所以子类就必须要实现父类的抽象方法?

5 6 7





多态的应用

 

所谓多态性是指一段程序能够处理多种类型对象的能力;

<?


//定义了一个形状的接口,里面有两个抽象方法让子类去实现

interface Shape

{

function area();

function perimeter();

}

//定义了一个矩形子类实现了形状接口中的周长和面积

class Rect implements Shape

{

private $width;

private $height;

function __construct($width, $height)

{

$this->width=$width;

$this->height=$height;

}

function area()

{

return "矩形的面积是:".($this->width*$this->height);

}

function perimeter()

{

return "矩形的周长是:".(2*($this->width+$this->height));

}

}

//定义了一个圆形子类实现了形状接口中的周长和面积

class Circular implements Shape

{

private $radius;

function __construct($radius)

{

$this->radius=$radius;

}

function area()

{

return "圆形的面积是:".(3.14*$this->radius*$this->radius);

}

function perimeter()

{

return "圆形的周长是:".(2*3.14*$this->radius);

}

}

//把子类矩形对象赋给形状的一个引用

$shape=new Rect(5, 10);

echo $shape->area()."<br>";

echo $shape->perimeter()."<br>";

//把子类圆形对象赋给形状的一个引用


$shape=new Circular(10);

echo $shape->area()."<br>";

echo $shape->perimeter()."<br>";

?>  



通过上例我们看到,把矩形对象和圆形对象分别赋给了变量$shape,调用$shape 引用中的面积和周长的方法,出现了不同的结果,这就是一种多态的应用;

 

把对象串行化


把一个对象在网络上传输,为了方便传输,可以把整个对象转化为二进制串,等到达另一端时,再还原为原来的对象,这个过程称之为串行化


串行化有两个过程,一个是串行化,就是把对象转化为二进制的字符串,我们使用 serialize()函数;

另一个是反串行化,就是把对象转化的二进制字符串再转化为对象, 我们使用 unserialize()函数;






<?

class Person

{

//下面是人的成员属性

var $name//人的名字

var $sex;

//人的性别

var $age;

//人的年龄

//定义一个构造方法参数为属性姓名$name、性别$sex 和年龄$age 进行赋值

function __construct($name="",$sex="", $age="")

{

$this->name=$name;

$this->sex=$sex;

$this->age=$age;

}

//这个人可以说话的方法, 说出自己的属性


function say()

{

echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>";

}

/*在 php5 中有两个魔术方法__sleep()方法和__wakeup()方法,在对象串行化的时候,会调用一

个__sleep()方法来完成一些睡前的事情;而在重新醒来,即由二进制串重新组成一个对象的时候,

则会自动调用 PHP 的另一个函数__wakeup(),做一些对象醒来就要做的动作。*/

//末被包含的属性将在串行化时被忽略,如果没有__sleep()方法,PHP 将保存所有属性。

//指定串行化时把返回的数组中$name 和$age 值串行化,忽略没在数组中的属性$sex

function __sleep(){

    $arr=array("name","age");

    return $arr;

}

//重新生成对象时,并重新赋值$age为40

function __wakeup(){

    $this->age=40;

}



}

$p1=new Person("张三""男", 20);

$p1_string=serialize($p1); //把一个对象串行化,返一个字符串

echo $p1_string."<br>"//串行化的字符串我们通常不去解析

$p2=unserialize($p1_string); //把一个串行化的字符串反串行化形成对象$p2

$p2->say();

?>




自动加载类 


 

 可以定义一个__autoload()函数,它会在试图使用尚未被定义的类时自动调用;


本例尝试分别从 MyClass1.php 和 MyClass2.php 文件中加载 MyClass1 和 MyClass2 类;



<?php

function __autoload($classname)

{

require_once $classname . '.php';

}

//MyClass1 类不存在自动调用__autoload()函数,传入参数”MyClass1”

$obj = new MyClass1();

//MyClass2 类不存在自动调用__autoload()函数,传入参数”MyClass2”

$obj2 = new MyClass2();

?>  




1、如果类存在继承关系(例如:ClassB extends ClassA),并且ClassA不在ClassB所在目录利用__autoload魔术函数实例化ClassB的时候就会受到一个致命错误:Fatal error: Class ‘Classd’ not found in ……ClassB.php on line 2,

2、另外一个需要注意的是,类名和类的文件名必须一致,才能更方便的使用魔术函数__autoload;

3、在CLI模式下运行PHP脚本的话这个方法无效;(PHP CLI模式开发不需要任何一种Web服务器(包括Apache或MS IIS等));

4、如果你的类名称和用户的输入有关——或者依赖于用户的输入,一定要注意检查输入的文件名,例如:.././这样的文件名是非常危险的。

关于医闹之我见

今天一大早又在群上看到这样招聘信息,联想到昨天的的新闻,某地的医护人员罢工抗议医闹……觉得医闹就是医院自找的。

guan-yu-yi-nao-zhi-wo-jian

现在的实际情况是确实有一小部分患者无理取闹,但大部分的医院,医生都是以赚钱为目的;

所以看到医闹这样的新闻,我们是没有办法分清谁对谁错的;

 

看看这些招聘信息,有点了解百度竞价和网站优化的人就能知道我为什么这样说了。

医院为什么要竞价?为什么要编辑?为什么要文案?为什么要咨询员?说到底就一句话,为了骗患者!!!为了骗钱!!!!
他们能过百度竞价,SEO优化把医院网站展示在百度首页,这样患者通过搜索进入他们的网站,然后通过咨询口若悬河把患者骗过来~
再然后大家都懂的了。。。。。至于他们到底有多少先进设备,医生有多少技术经验这些还重要吗?至于能不能治好病,什么时候治好这些还重要吗?重要的给患者多开药,多做检查,多做手术;至于患者身体怎么样,承不承受得了,谁管你那么多?
了解一点的人都知道,百度竞价就是一个烧钱的过程,一个热门关键字点击一次几十块钱是再正常不过的了,这些钱从哪里来?羊毛出在羊身上!!!最后还不是患者来承担!!

唉,不想多说了 ~感觉多悲哀的。

2014年8月23日星期六

谷歌搜索在2013年改进了890多次

转载这个只是为了吐槽一下,为什么那么多好的东西在我大天朝就是不能用?!悲哀悲哀啊!!


google search


北京时间8月21消息,据美国科技网站SearchEngineLand报道,谷歌搜索负责人Amit Singhal日前在Google+上撰文称:“谷歌搜索在过去一年里进行了超过890次的改进。”


2009年,谷歌对外称,在前一年针对搜索做了350-400次改进,在2010年的前一年做了550次的改进。谷歌工程师Matt Cutts曾在2010年的一段视频中表示,对于核心搜索算法每天都会修改一次。众所周知,谷歌每天都会测试上百次的修改,但只会采用极少一部分。


Amit 所提到的890次改进则是指搜索业务,它主要包括UI、自动完成和Google Now等诸多方面的改进,不仅仅是算法。


Amit 也分享了2004年以来谷歌搜索的十个大事件,来回顾谷歌IPO十年来搜索业务的发展历程。具体详情如下:


1. 自动完成。当用户正在搜索时,我们能够预测出他们最有可能输入的单词或短句,并即时给出相关的搜索结果。例如:菜谱名“silky gingered zucchini soup”,你完全不需要输入完整的菜名,只需前部分。


2. 翻译。谷歌翻译在十年前仅仅是一个测试版。如今,谷歌翻译每天需要支持超过80种语言和十亿条的翻译。例如,在谷歌搜索框输入“translate 10 years into German”,就会得到你想要的结果。


3. 交通。以前我们只能搜索网页,但通过地图服务我们可以搜索现实世界了。你可以在问“How far is it to Santa Cruz?”,还可以选择步行、骑车、公交车或开车,甚至是选择最快路线来避开交通拥堵的路段。


4. 普适搜索。用户想要的搜索结果不仅仅是文字,还包括图片和视频等。如果你搜索John F. Kennedy总统的“Moon Speech”,那么你是想看Kennedy演讲。因此,谷歌会给出适用各种设备的视频格式,不管你是使用手机还是PC进行搜索。


5. 移动搜索。随着时代的发展,新兴平台骤增,但谷歌搜索依然支持这些设备——平板、手机、智能手表和电视等。


6. 语音搜索。输入笨重关键词的时代已经成为过去时了,用户完全可以通过语音来进行搜索。例如:你以前在查询天气时会输入:“weather chicago”,现在你仅需要说:“我明天需要带伞吗?”目前,谷歌语音搜索已支持38种语言。


7. 操作。使用谷歌的搜索应用时,你可以快速的发短信、发邮件或者打电话,无需查找和输入号码或地址。你只需要说:“Ok Google,发邮件给Jason:小伙伴,你是否愿意在周六和我们一起去海边野炊?”你甚至可以设置一个高级提醒。例如:“在我下次去超市时提醒我买一个咖啡过滤机”,那么当你下一次出现在超市附近时,手机就会给你发送提醒。


8. 知识图谱。我们生活的世界是由实物组成的,而不仅仅是文字。因此,谷歌建立了知识图谱将搜索结果的知识体系完整的呈现出来,来揭示事物之间的联系。


9. 定制信息。如果你有一份航班的信息保存在Gmai中,你可以使用谷歌搜索“我的飞机停靠在哪个廊桥?”你会直接获得答案。同样,你可以问快递、上课等情况。这一切都是属于你的定制信息。


10. 提前回答。如果你安装了谷歌搜索应用,你的日常生活将会变得智能化。当你需要的时候,谷歌会告诉你航班、公交车和火车的相关信息,又或者赶赴约会时会提前告诉你交通状况等。(文/钱曙光 责编/单明珠)