Re: [問題] function接收變數

作者: meteorsok (花花小蛋糕)   2014-11-13 09:56:49
: 推 meteorsok: <input onclick="func('<?php echo $text; ?>')" /> 11/12 15:00
: → oppositebank: 原來echo放這! 感謝樓上 11/13 02:16
: → carylorrk: 這種 code 維護大概會很頭痛吧。 11/13 03:19
的確會頭痛
但這個答案對新手來說,可以了解php最基本嵌入網頁的方式
當然有其他解法,但除了ajax call api 取得參數以外
我想都逃離不了這種嵌入的概念
原問題:想要將一個php變數當成button的參數使用,應該都是以下幾種方式
1. 我的推文
2. 改放在attr,function 帶 this 去拿
3. 另外放在js變數,用js來產生元素時帶入
4 ajax call api拿參數
1~3幾乎都是一樣的概念,只是嵌入的位置不同
或許可以用一些framework的helper來美化
<?php echo Helper::button($text, array("some_attr"=>$value)); ?>
或者用template engine來跑
<button some_attr="{% value %}"></button>
好看,但原理一樣
即使用js template 來產生元素
還是要用嵌入的方式給js吃點東西
當然可以用第四種ajax call api拿
這種就真的可以達到前後端分離了
最後
如果一個新手直接學framework (js: jquery , php: laravel)
而不瞭解基本的東西
我想並不是一件好事情
如果我有什麼誤解,希望可以有高手來指正
我也想學習
感恩~
作者: carylorrk (carylorrk)   2014-11-13 11:44:00
well..我贊成你的意見,而且事實上就這個例子來說的確沒有超出把 php 當成 template language 來使用的適合範疇。只是我寫的經驗是,PHP 同時可以作為撰寫邏輯的程式語言及和 HTML 混雜的 template 語言本身就對新手造成一些 web programming 基礎的 confusion要記得 PHP 這個嵌入的語言並不是網頁程式原本就有的樣子,從以前俗稱寫 CGI 的 C++ 到現在的 Python、Ruby都是 general purpose language 拿來寫 web,所以他們的framework 都會明確的說出自己在原本語言上建構了哪些適合語言的模型。就算不用 framework,處理 HTTP req久了也會自己出現像是用 string + variable 這種"template" 方式。沒錯,並不是一定要有 templatelanguage 才叫做 template XD...不過就算如此,和你說的一樣這也只是把資料嵌入的概念差別在於,PHP 讓你誤以為 template 是 "另一種方式",從而讓你習慣把資料、邏輯、presentation 混雜在一起。如果沒有意識到 PHP 作為 template language 和programming language 的職責區分,很容易有這種情況。而且 PHP 作為 template language 本身有些缺陷,像是語法太繁瑣、缺少(或需要特殊技巧)template language的一些 feature (ex: inheritance)。既然本來就不是原生的寫作網頁方式,加個 lib 讓她更好不為過吧XD最後要提的一點是,ajax 跟 framework 沒什麼關係,XHR 是標準的東西~簡而言之,就「我的觀點」,PHP 自己加的這層反而容易讓新手搞混網頁程式的一些基本的東西。
作者: s25g5d4 (function(){})()   2014-11-13 16:58:00
用 template 語言寫出來的 template 引擎寫另外一套 template 這就是 PHP XD

Links booklink

Contact Us: admin [ a t ] ucptt.com