仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 679|回复: 19
打印 上一主题 下一主题

[学习教程] PHP网站制作之PHP实例申明编写PHP代码的5个好习气

[复制链接]
飘飘悠悠 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:44:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
在这里想谈谈自己这六个多月的PHP学习心得,希望对给比我还新的新手们有所帮助,讲的不是很深刻,甚至有的想法可能是错误的,希望不要误导新人才好,大家要有自己的主见。   </p> 5个PHP编程的好习气
有些人问,优异法式员和大牛有甚么区分,也许有10到20种吧。由于大牛有很好的编程习气和丰厚的经历,所以他们十分的高效。假如欠好的编程习气呈现在你的代码里,你的代码效力就会下降。本文论述一些好的编程习气,他们可让你成为更好的法式员。
这些习气能让你的代码在高效运转的同时进步可保护性。你写代码的时分,能够大局部工夫都华侈在保护上了,法式的保护价值很高。培育优秀的编程习气,如模块化设计,可让你的代码可读性更好,从而轻易保护。
代码中的成绩常常陪伴着不良的编程习气,并且后者会招致代码欠好修正并能够呈现新的缺点。上面有五个好的编程习气,将帮你防止这些圈套:

  • 利用友爱的定名体例。
  • 利用更精干短小的代码。
  • 正文你的代码。
  • 编写异常处置。
  • 永久,永久不要复制粘贴.(玉米:我深深的赞同这一点)
上面的章节将注释这些习气。
优秀的定名体例是最主要的编程习气,由于好的定名会让代码易懂,好懂。代码的可读性决意它的可保护性。即便你在代码没有写正文,假如它可读性好的话,它也修正起来也会复杂。你应当在实习开时就利用优秀的定名体例,让你的代码像一本书一样。
例1包括一个太短的变量名,写出如许的代码十分欠好弄懂,并且函数名也没有明晰的描写出这个办法是做甚么的。函数名暗示了函数的功效,假如它倒是做其余用处的,那就会误导他人。

  1. <?phpfunction getNBDay($d){ switch($d) { case 5: case 6: case 7: return 1; default: return ($d + 1); }}$day = 5;$nextDay = getNBDay($day);echo ("Next day is: " . $nextDay . "\n");?>
复制代码
例2则给出了利用优秀定名体例的代码。从头定名函数是为了更好的反应它们的功效。变量也从头定名为描写性的。只要一个在轮回中的$i还利用短的变量名。虽然有些人分歧意,短变量名在轮回中是请答应的——乃至更好些,由于它们明晰的起到了指针的功效。
  1. <?phpdefine ('MONDAY', 1);define ('TUESDAY', 2);define ('WEDNESDAY', 3);define ('THURSDAY', 4);define ('FRIDAY', 5);define ('SATURDAY', 6);define ('SUNDAY', 7);/* * * @param $dayOfWeek * @return int Day of week, with 1 being Monday and so on. */function findNextBusinessDay($dayOfWeek){ $nextBusinessDay = $dayOfWeek; switch($dayOfWeek) { case FRIDAY: case SATURDAY: case SUNDAY: $nextBusinessDay = MONDAY; break; default: $nextBusinessDay += 1; break; } return $nextBusinessDay;}$day = FRIDAY;$nextBusDay = findNextBusinessDay($day);echo ("Next day is:" . $nextBusDay . "\n");?>
复制代码
我勉励你在函数平分隔长的前提给函数定名,以便于描写这个前提。(玉米:这句话啥意思?5555)这个技能会让你的代码轻易浏览和扩大,因而它可以被笼统复用。假如前提产生了改动,如许也会很轻易更新函数 .因为办法有一个见名知义的名字,化码就不会得到它原本的意思或变得难以了解。
利用更少的代码
编写代码、处理成绩是一种轻易的工作。当你处理一个正在产生的成绩,编呀编,写呀写,你的办法愈来愈长。只需你回头利用更少的代码来重构,就是过了好久也没甚么成绩。
重构是个好主张,但你应当养成第一次就写出更短小精干代码的习气。在一个窗口上(玉米:不必翻页)就可以看全的短小函数更轻易了解。 如果一个函数长出了窗口,就很难了解了,由于你不克不及疾速的从头到脚的阅读全部代码。
当构想一个办法的时分,你还应当养成一个让它们只做一件工作的习气。以下要素写代码时应常注重。第一,只做一件工作的函数更容易于复用。第二,如许的函数测试更便利。第三,如许的函数好读易懂便利改——假如需要的话——让它们尽量的复杂吧。
坏习气:太长的函数(良多时分)
例三是太长函数的体现。它不晓得本人要做甚么。它做太多的工作,所以没有集成化。它更难以了解,欠好Debug和测试。它遍历文件创立列表,它给对象赋值,它做一些盘算,……它耕田,它浇水,乃至做更多工作。(^_^)
例三. 坏习气:太长函数
  1. <?phpfunction writeRssFeed($user){ // Get the DB connection information // look up the user's preferences... $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password') OR die(mysql_error()); // Query $perfsQuery = sprintf("SELECT max_stories FROM user_perfs WHERE user= '%s'", mysql_real_escape_string($user)); $result = mysql_query($query, $link); $max_stories = 25; // default it to 25; if ($row = mysql_fetch_assoc($result)) { $max_stories = $row['max_stories']; } // go get my data $perfsQuery = sprintf("SELECT * FROM stories WHERE post_date = '%s'", mysql_real_escape_string()); $result = mysql_query($query, $link);  $feed = "<rss version=\"2.0\">" . "<channel>" . "<title>My Great Feed</title>" . "<link>http://www.example.com/feed.xml</link>" . "<description>The best feed in the world</description>" . "<language>en-us</language>" . "<pubDate>Tue, 20 Oct 2008 10:00:00 GMT</pubDate>" . "<lastBuildDate>Tue, 20 Oct 2008 10:00:00 GMT</lastBuildDate>" . "<docs>http://www.example.com/rss</docs>" . "<generator>MyFeed Generator</generator>" . "<managingEditor>editor@example.com</managingEditor>" . "<webMaster>webmaster@example.com</webMaster>" . "<ttl>5</ttl>"; // build the feed... while ($row = mysql_fetch_assoc($result)) { $title = $row['title']; $link = $row['link']; $description = $row['description']; $date = $row['date']; $guid = $row['guid']; $feed .= "<item>"; $feed .= "<title>" . $title . "</title>"; $feed .= "<link>" . $link . "</link>"; $feed .= "<description> " . $description . "</description>"; $feed .= "<pubDate>" . $date . "</pubDate>"; $feed .= "<guid>" . $guid . "</guid>"; $feed .= "</item>"; } $feed .= "</rss"; // write the feed out to the server... echo($feed);}?>
复制代码
如果你再加更多器材到这个函数里,它会很快变得难以保护。
好习气:可办理,集成化的函数
  1. <?phpfunction createRssHeader(){ return "<rss version=\"2.0\">" . "<channel>" . "<title>My Great Feed</title>" . "<link>http://www.example.com/feed.xml</link>" . "<description>The best feed in the world</description>" . "<language>en-us</language>" . "<pubDate>Tue, 20 Oct 2008 10:00:00 GMT</pubDate>" . "<lastBuildDate>Tue, 20 Oct 2008 10:00:00 GMT</lastBuildDate>" . "<docs>http://www.example.com/rss</docs>" . "<generator>MyFeed Generator</generator>" . "<managingEditor>editor@example.com</managingEditor>" . "<webMaster>webmaster@example.com</webMaster>" . "<ttl>5</ttl>";}function createRssFooter(){ return "</channel></rss>";}function createRssItem($title, $link, $desc, $date, $guid) { $item .= "<item>"; $item .= "<title>" . $title . "</title>"; $item .= "<link>" . $link . "</link>"; $item .= "<description> " . $description . "</description>"; $item .= "<pubDate>" . $date . "</pubDate>"; $item .= "<guid>" . $guid . "</guid>"; $item .= "</item>"; return $item;}function getUserMaxStories($db_link, $default){ $perfsQuery = sprintf("SELECT max_stories FROM user_perfs WHERE user= '%s'", mysql_real_escape_string($user)); $result = mysql_query($perfsQuery, $db_link); $max_stories = $default; if ($row = mysql_fetch_assoc($result)) { $max_stories = $row['max_stories']; }  return $max_stories;}function writeRssFeed($user){ // Get the DB connection information $settings = parse_ini_file("rss_server.ini"); // look up the user's preferences... $link = mysql_connect($settings['db_host'], $settings['user'],  $settings['password']) OR die(mysql_error()); $max_stories = getUserMaxStories($link, 25); // go get my data $newsQuery = sprintf("SELECT * FROM stories WHERE post_date = '%s'", mysql_real_escape_string(time())); $result = mysql_query($newsQuery, $link);  $feed = createRssHeader(); $i = 0; // build the feed... while ($row = mysql_fetch_assoc($result)) { if ($i < $max_stories) { $title = $row['title']; $link = $row['link']; $description = $row['description']; $date = $row['date']; $guid = $row['guid']; $feed .= createRssItem($title, $link, $description, $date, $guid); $i++; } else {  break; } } mysql_close($link); $feed .= createRssFooter(); // write the feed out to the server... echo($feed);}?>
复制代码
把长函数朋分会招致效力下降,所以要注重,这个好习气不要利用过度。如许做能够也会引发浏览性差,跟本来人家是一个全体时没甚么区分。
正文代码
正文你的代码有时就像你刚着手写代码一样坚苦。明白正文内容很辣手,由于他要写出代码要做甚么。正文变量是一个好主张。在函数头部正文能够不太分明时,就能够告知浏览者函数要甚么参数,有甚么前往和次要的意图。
凡是人人会正文代码是做甚么的,但这其实不需要。假如代码让人猜疑以致于你不能不写正文说它是做甚么的,这就提醒你应当重写它,使它更好懂。定名优秀、加倍短小、组织公道的代码习气会让你的代码用不着正文就具有很高的可读性。
坏习气:压根没有或叽叽歪歪的函数正文 (^_^)
例5的正文只给出了代码在做甚么——它的经由过程轮回的遍历、加了个数。然而丢了为何这么做和要做甚么。 这会让他人难以不影响原代码的情况下平安修正的做出修正。
例5 :压根没胡或叽叽歪歪的函数正文
  1. <?phpclass ResultMessage { private $severity; private $message; public function __construct($sev, $msg)  { $this->severity = $sev; $this->message = $msg; } public function getSeverity() { return $this->severity; } public function setSeverity($severity) { $this->severity = $severity; } public function getMessage() { return $this->message; } public function setMessage($msg) { $this->message = $msg; }}function cntMsgs($messages){ $n = 0; /* iterate through the messages... */ foreach($messages as $m) { if ($m->getSeverity() == 'Error') { $n++; // add one to the result; } } return $n;}$messages = array(new ResultMessage("Error", "This is an error!"), new ResultMessage("Warning", "This is a warning!"), new ResultMessage("Error", "This is another error!"));$errs = cntMsgs($messages);echo("There are " . $errs . " errors in the result.\n");?>
复制代码
好习气: 正文函数和类
例6里的正文标了然类和函数的意图。正文标明办法做了甚么和为何做,这会对未来懂得代码的意图很有匡助。情况的变更会需求你停止代码修正,这就会让很轻易的晓得入手下手时你代码是做甚么的。
例6.好习气:正文函数和类
  1. <?php/** * The ResultMessage class holds a message that can be returned * as a result of a process. The message has a severity and * message. *  * @author nagood * */class ResultMessage { private $severity; private $message; /** * Constructor for the ResultMessage that allows you to assign * severity and message. * @param $sev See {@link getSeverity()} * @param $msg * @return unknown_type */ public function __construct($sev, $msg)  { $this->severity = $sev; $this->message = $msg; } /** * Returns the severity of the message. Should be one * "Information", "Warning", or "Error". * @return string Message severity */ public function getSeverity() { return $this->severity; } /** * Sets the severity of the message * @param $severity * @return void */ public function setSeverity($severity) { $this->severity = $severity; } public function getMessage() { return $this->message; } public function setMessage($msg) { $this->message = $msg; }}/* * Counts the messages with the given severity in the array * of messages. *  * @param $messages An array of ResultMessage * @return int Count of messages with a severity of "Error" */function countErrors($messages){ $matchingCount = 0; foreach($messages as $m) { if ($m->getSeverity() == "Error") { $matchingCount++; } } return $matchingCount;}$messages = array(new ResultMessage("Error", "This is an error!"), new ResultMessage("Warning", "This is a warning!"), new ResultMessage("Error", "This is another error!"));$errs = countErrors($messages);echo("There are " . $errs . " errors in the result.\n");?>
复制代码
异常处置
写强健使用时常常会提到的异常处置,普通遵守着80/20准绳: 80%的代码用于处置异常或验证,20%的代码没甚么实践的用处。原始的代码凡是都是在悲观的情况下编写的。这意味着代码可以在数据正常、一切了解的基本情况中任务的很好。然而这类代码在其性命周期内是懦弱的。在极真个情况中,你得花更多的工夫来未极可能永久不会产生的情况编写响应代码。
这个习气就是要你处置全体的失足情形,并且假如如果不这么做,你的代码永久也完不成。
坏习气:不处置任何异常
  1. <?php// Get the actual name of the function convertDayOfWeekToName($day){ $dayNames = array( "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"); return $dayNames[$day];}echo("The name of the 0 day is: " . convertDayOfWeekToName(0) . "\n");echo("The name of the 10 day is: " . convertDayOfWeekToName(10) . "\n");echo("The name of the 'orange' day is: " . convertDayOfWeekToName('orange') . "\n");?>
复制代码
好习气: 戍守型编程
例8标明处置并抛出异常是一件很成心义的工作。不只是额定的异常处置可让代码强健,然而这有助于进步代码的可读性。这类异常处置为原作者检查什么时候编写供应了一个很好的申明。
例8.好习气:戍守型编程
  1. <?php/** * This is the exception thrown if the day of the week is invalid. * @author nagood * */class InvalidDayOfWeekException extends Exception { }class InvalidDayFormatException extends Exception { }/** * Gets the name of the day given the day in the week. Will * return an error if the value supplied is out of range. *  * @param $day * @return unknown_type */function convertDayOfWeekToName($day){ if (! is_numeric($day)) { throw new InvalidDayFormatException('The value \'' . $day . '\' is an ' . 'invalid format for a day of week.'); } if (($day > 6) ($day < 0)) { throw new InvalidDayOfWeekException('The day number \'' . $day . '\' is an ' . 'invalid day of the week. Expecting 0-6.'); } $dayNames = array( "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"); return $dayNames[$day];}echo("The name of the 0 day is: " . convertDayOfWeekToName(0) . "\n");try { echo("The name of the 10 day is: " . convertDayOfWeekToName(10) . "\n");} catch (InvalidDayOfWeekException $e) { echo ("Encountered error while trying to convert value: " . $e->getMessage() . "\n");}try { echo("The name of the 'orange' day is: " . convertDayOfWeekToName('orange') . "\n");} catch (InvalidDayFormatException $e) { echo ("Encountered error while trying to convert value: " . $e->getMessage() . "\n");}?>
复制代码
经由过程查验参数的全法性——这有助于别人利用你需求准确参数的函数——你应当查验它们并抛出异常的粗心:


  • 尽可能抛出接近毛病的异常.
  • 处置每一个特别的异常.
  永久,永久不要复制粘贴
把代码复制到你的编纂里的才能是一把双刃剑。一方面,它防止了你参照一些示例后从头再打一遍时呈现的毛病;另外一方面,它让书写类似代码太复杂了。
你要防止在你的法式使用中复制粘贴代码。当你发明本人在如许做时,停上去并问本人可不成以把复制的局部反复利用。把不异的代码放在统一个中央可让你今后修正时加倍的轻松,由于要改动都在一同。
坏习气:类似的代码块
例9体现了除一些值地点地位以外很邻近的几个办法。有些东西可以查验你的代码中复制粘贴的局部(去看看Resources)。
例9.类似的代码块
  1. <?php/** * Counts the number of messages found in the array of  * ResultMessage with the getSeverity() value of "Error" *  * @param $messages An array of ResultMessage * @return unknown_type */function countErrors($messages){ $matchingCount = 0; foreach($messages as $m) { if ($m->getSeverity() == "Error") { $matchingCount++; } } return $matchingCount;}/** * Counts the number of messages found in the array of  * ResultMessage with the getSeverity() value of "Warning" *  * @param $messages An array of ResultMessage * @return unknown_type */function countWarnings($messages){ $matchingCount = 0; foreach($messages as $m) { if ($m->getSeverity() == "Warning") { $matchingCount++; } } return $matchingCount;}/** * Counts the number of messages found in the array of  * ResultMessage with the getSeverity() value of "Information" *  * @param $messages An array of ResultMessage * @return unknown_type */function countInformation($messages){ $matchingCount = 0; foreach($messages as $m) { if ($m->getSeverity() == "Information") { $matchingCount++; } } return $matchingCount;}$messages = array(new ResultMessage("Error", "This is an error!"), new ResultMessage("Warning", "This is a warning!"), new ResultMessage("Error", "This is another error!"));$errs = countErrors($messages);echo("There are " . $errs . " errors in the result.\n");?>
复制代码
好习气:可复用的带参函数
例10展现了把要复制的代码入到一个办法中的代码修正。另外一个修正的办法则把任务代办署理给了一个新的办法 。编写一个通用的办法要花一些工夫来设计,固然这会让你停上去思虑,而不是用复制粘贴的组合快捷键。然而如许做会在今后修正时省回第一次多花的工夫。
例10.好习气 :可使用的带参函数
  1. <?php /* * Counts the messages with the given severity in the array * of messages. *  * @param $messages An array of ResultMessage * @return int Count of messages matching $withSeverity */ function countMessages($messages, $withSeverity) { $matchingCount = 0; foreach($messages as $m) { if ($m->getSeverity() == $withSeverity) { $matchingCount++; } } return $matchingCount; } /** * Counts the number of messages found in the array of  * ResultMessage with the getSeverity() value of "Error" *  * @param $messages An array of ResultMessage * @return unknown_type */ function countErrors($messages) { return countMessages($messages, "Errors"); } /** * Counts the number of messages found in the array of  * ResultMessage with the getSeverity() value of "Warning" *  * @param $messages An array of ResultMessage * @return unknown_type */ function countWarnings($messages) { return countMessages($messages, "Warning"); } /** * Counts the number of messages found in the array of  * ResultMessage with the getSeverity() value of "Warning" *  * @param $messages An array of ResultMessage * @return unknown_type */ function countInformation($messages) { return countMessages($messages, "Information"); } $messages = array(new ResultMessage("Error", "This is an error!"), new ResultMessage("Warning", "This is a warning!"), new ResultMessage("Error", "This is another error!")); $errs = countErrors($messages); echo("There are " . $errs . " errors in the result.\n");?>
复制代码
结论
假如当你开辟PHP的时分养成了本文中提到的好习气,你写的代码将会好读、好懂、好保护。编写可保护代码的体例将让你的代码可以高度排错,并告辞初级毛病。
利用优秀定名并用短代码块来组强你的代码会让你的代码复杂了然。注明你代码的目标会让它的大旨明白易于了解。异常处置让你的代码强健。最初,摒弃复制粘贴的恶习让你的代码整洁。
-----------------------------------------------------
玉米寄语:最初的这个复制粘贴的建议让我一身盗汗,想一想其实有良多代码都是反复的任务,有时只是为了“快”,而把类似的代码又“复制”了一遍,固然我没有利用ctrl+c\v 然而也是写了良多相似的代码,看来,review的事儿可以活着界战争的事儿之前思索了。
培训的第三阶段,开始接触MYSQL,设计数据库,学习PHP如何去连接MYSQL数据库。对于MYSQL,我并不陌生,因为学校开设了Linux系统的课程,对于数据库的操作。
冷月葬花魂 该用户已被删除
沙发
发表于 2015-2-4 06:26:21 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
第二个灵魂 该用户已被删除
板凳
发表于 2015-2-9 17:36:26 | 只看该作者
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
再现理想 该用户已被删除
地板
发表于 2015-2-16 01:10:39 | 只看该作者
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
蒙在股里 该用户已被删除
5#
发表于 2015-3-1 18:01:07 | 只看该作者
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
只想知道 该用户已被删除
6#
发表于 2015-3-5 13:32:22 | 只看该作者
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
深爱那片海 该用户已被删除
7#
发表于 2015-3-11 13:53:57 | 只看该作者
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
乐观 该用户已被删除
8#
发表于 2015-3-18 15:46:46 | 只看该作者
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
莫相离 该用户已被删除
9#
发表于 2015-3-23 07:56:59 | 只看该作者
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
精灵巫婆 该用户已被删除
10#
发表于 2015-3-31 18:25:45 | 只看该作者
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
11#
发表于 2015-4-1 08:45:22 | 只看该作者
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
admin 该用户已被删除
12#
发表于 2015-4-3 04:26:46 | 只看该作者
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
若天明 该用户已被删除
13#
发表于 2015-4-7 14:56:03 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
愤怒的大鸟 该用户已被删除
14#
发表于 2015-4-9 09:15:15 | 只看该作者
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
海妖 该用户已被删除
15#
发表于 2015-4-10 17:11:31 | 只看该作者
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
因胸联盟 该用户已被删除
16#
发表于 2015-4-20 11:44:21 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
柔情似水 该用户已被删除
17#
发表于 2015-4-21 15:43:58 | 只看该作者
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
透明 该用户已被删除
18#
发表于 2015-4-24 18:56:17 | 只看该作者
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
飘灵儿 该用户已被删除
19#
发表于 2015-5-7 15:23:18 | 只看该作者
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
金色的骷髅 该用户已被删除
20#
发表于 2015-6-18 11:16:01 | 只看该作者
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 00:45

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表