ホームページ >php教程 >php手册 >php 動的インクルード ファイル (Dynamic File include) ソース コード

php 動的インクルード ファイル (Dynamic File include) ソース コード

WBOY
WBOYオリジナル
2016-06-21 09:07:381540ブラウズ

動的|ソースコード|インクルード

ASP の Include メソッドは古すぎる、実際のプロジェクトでは、最初からこのファイルを使用する必要があるかどうかに関係なく、常にロードする必要があると不満を言う人は多いと思います。早めにインクルードしてください... この点では、PHP の方がはるかに快適です... いつ使用するか、いつ使用するか...

2003 年には Blue Ideal で動的インクルードに関する記事を目にしました。とても面白いと感じましたが、実際に使ってみると、インクルード効果が良くなく、不便でした

その後、改良版をウェブサイトで見ましたが、あまり使いやすかったです。 ~~

ねぇ、ASPをやめた時は本当にちょっと変な気がしたんだけど、今でも会社が開発にASPを使っているんだから、仕方ない…

今日は、今日のことを覚えておかなきゃ~~~見つけた外国のウェブサイトにもこんな良いものがありました 素晴らしい~~~素晴らしい作品です!!!

以前試した動的インクルードコードの中には、クラスや関数さえインクルードできなかったものもあります~~~あるいはインクルードファイルにインクルードすることもできませんでした含めることはできませんでした...

さて、この幽霊の男は、(dselkirk) によって書かれたクラスが私たちのためにこれを行うことができます~~~

コンテンツをクリップボードにコピー

コード:

<%
public include, include_vars
set include = new cls_include

class cls_include

private sub class_initialize()
set include_vars = server .createobject("scripting.dictionary")
end sub
private sub class_deactivate() I Arr_variables.Removeal
Include_vars = Nothing を設定
PUBLIC DEFAULT FUNCTION Include (Byval Str_Path)
r_source f if str_path & lt; "" then If request.querystring("debug") = 1 then
response.write str_source
response.end
else " end if
end function

private subconvert2code(str_source)
dim i, str_temp, arr_temp, int_len
if str_source <> "" then
if instr(str_source,"% " & ">") > instr(str_source,"<" & "%") then str_temp = replace(str_source,"<" & "%","|%" )
          str_temp = replace(str_temp,"%" & ">","|")
if left(str_temp,1) = "|" then str_temp = right(str_temp,len(str_temp) - 1)
if right(str_temp,1) = "|" then str_temp = left(str_temp,len(str_temp) - 1)
arr_temp = split(str_temp,"|")
int_len = ubound(arr_temp)
if (int_len + 1) > 0 その後、
for i = 0 to int_len
str_temp = trim(arr_temp(i))
str_temp = replace(str_temp,vbcrlf & vbcrlf,vbcrlf)
if left(str_temp,2) = vbcrlf then str_temp = right(str_temp,len (str_temp) - 2)
if right(str_temp,2) = vbcrlf then str_temp = left(str_temp,len(str_temp) - 2)
if left(str_temp,1) = "%" then
str_temp = right(str_temp, len(str_temp) - 1)
if left(str_temp,1) = "=" then
str_temp = right(str_temp,len(str_temp) - 1)
str_temp = "response.write " & str_temp
end if
else
if str_temp <> "" 次に
include_vars.add i, str_temp
str_temp = "response.write include_vars.item(" & i & ")"
end if
end if
str_temp = replace(str_temp,chr(34) & chr(34) & " & ","")
str_temp = replace(str_temp," & " & chr(34) & chr(34),"")
if right(str_temp,2) <> vbcrlf then str_temp = str_temp
arr_temp(i) = str_temp
next
str_source = join(arr_temp,vbcrlf)
end if
else
if str_source <> "" その後
include_vars.add "var", str_source
            str_source = "response.write include_vars.item(""var"")"
end if
end if
end if
end sub

private sub processincludes(str_source)
dim int_start, str_path, str_mid, str_temp
str_source = replace (str_source,""))
int_start = 0 まで行う
str_mid = lcase(getbetween(str_source,""))
int_start = instr (str_mid,"#include")
if int_start >  0 then
str_temp = lcase(getbetween(str_mid,chr(34),chr(34)))
str_temp = trim(str_temp)
str_path = readfile(str_temp)
str_source = replace(str_source,"",str_path & vbcrlf)
end if
int_start = instr(str_source,"#include")
ループ
end sub

private sub formatcode(str_code)
dim i, arr_temp, int_len
str_code = replace(str_code,vbcrlf & vbcrlf,vbcrlf)
if left(str_code,2) = vbcrlf then str_code = right(str_code,len(str_code) - 2)
str_code = trim(str_code)
if instr(str_code,vbcrlf ) > 0 then
arr_temp = split(str_code,vbcrlf)
for i = 0 to ubound(arr_temp)
arr_temp(i) = ltrim(arr_temp(i))
arr_temp(i) if arr_temp(i) <> "" then arr_temp(i) = arr_temp(i) & vbcrlf
next
str_code = join(arr_temp,"")
arr_temp = vbnull
end if end sub

プライベート 関数 readfile(str_path)
dim objfso, objfile
if str_path <> "" then
if instr(str_path,":") = 0 then str_path = server.mappath(str_path)
set objfso = server.createobject("scripting.filesystemobject")
if objfso.fileexists(str_path) ) 次に
set objfile = objfso.opentextfile(str_path, 1, false)
if err.number = 0 then
readfile = objfile.readall
objfile.close
          end if
set objfile = nothing
end if
set objfso = nothing
end if
end function

private function getbetwe en(strdata, strstart, strend)
dim lngstart, lngend
lngstart = instr(strdata, strstart) + len( strstart)
if (lngstart <> 0) then
lngend = instr(lngstart, strdata, strend)
if (lngend <> 0) then
getbe tween = mid(strdata, lngstart, lngend - lngstart)
end if
end if
end function

end class
%>



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。