在當今互聯網時代,網頁瀏覽器可以說是人們日常生活不可或缺的一部分。其中,chrome瀏覽器應該算是目前最主流的瀏覽器之一了。而其背后的核心——chromium源碼,也是開源界逐漸受到關注的一個項目。而今天,我們就來聊聊chromium源碼與php的結合。
在開發網頁時,php無疑是一個非常重要的語言。在chromium源碼中,也涉及了php的使用。例如,在src/chrome/browser/net/chrome_http_auth_controller.cc文件中,part_authorization()函數中就使用了php進行授權驗證。而在這里,我們就可以看到chrome瀏覽器是如何調用php文件完成授權驗證的。
另外,chromium源碼中也涉及到了與php相關的庫。例如在src/third_party/WebKit/Source/WebCore/platform/network/Blob.cpp文件中,我們可以看到下面這段代碼:
precode{
#include "FormDataBuilder.h"
#include "SharedBuffer.h"
#include#include#include "platform/network/BlobData.h"
#include "platform/network/BlobDataCurl.h"
#include "platform/network/BlobDataFileReferences.h"
#include "platform/network/BlobRegistryImpl.h"
#include "platform/network/BlobURL.h"
#include "platform/network/FormDataBuilderGtk.h"
#include "platform/weborigin/SecurityOrigin.h"
#include "wtf/RefCounted.h"
#include "wtf/RefPtr.h"
#include#include "wtf/text/CString.h"
#include "wtf/text/WTFString.h"
#include "platform/network/SynchronousBlobRegistry.h"
#include "platform/gtk/ClipboardUtilitiesGtk.h"
#include "gtk/gtk.h"
#include#include#includeusing namespace std::chrono_literals;
#endif // !defined(OS_ANDROID)
namespace WebCore {
long long Blob::maximumSize() { return std::numeric_limits::max(); }
Blob::Blob(Vector&& parts, const String& type)
: m_type(type), m_size(0) {}
} // namespace WebCore
}
}
#endif // defined(ENABLE_BLOB)
precode}
可以看到,在這個文件中,涉及到了許多不同的庫,包括C++標準庫,gtk,glib,gio等。而這里也清晰地顯示出chromium源碼要完成一個功能需要的多個輔助庫,也說明了為什么chromium源碼能夠如此強大和實用。
除此之外,chromium源碼還提供了許多API來支持php等語言的調用。例如,在src/chrome/browser/devtools/devtools_protocol_handler.cc文件中,不僅涉及到了php調用,而且還提供了相關的方法。具體來說,可以看下面這段代碼:
precode{
void DevToolsProtocolHandler::InitializeStaticHandlers() {
AddStaticHandler("Debugger.enable", &HandleDebuggerEnable,
"Debugger.enable",
"Enables debugger for the given page. Clients should not"
" assume that the debugging has been enabled until the result"
" for this command is received.");
AddStaticHandler("Runtime.enable", &HandleRuntimeEnable, "Runtime.enable",
"Enables runtime for the given page. Clients should not"
" assume that the runtime has been enabled until the result"
" for this command is received.");
AddStaticHandler("Runtime.disable", &HandleRuntimeDisable,
"Runtime.disable",
"Disables runtime for the given page.");
AddStaticHandler("Runtime.getProperties", &HandleRuntimeGetProperties,
"Runtime.getProperties",
"Returns properties of a given object. Object group of"
" the result is inherited from the inspected page.");
AddStaticHandler("Page.enable", &HandlePageEnable, "Page.enable",
"Enables page domain notifications.");
AddStaticHandler("Page.disable", &HandlePageDisable, "Page.disable",
"Disables page domain notifications.");
AddStaticHandler("Page.getResourceContent", &HandleGetResourceContent,
"Page.getResourceContent",
"Returns content of the given resource.");
AddStaticHandler("Page.getResourceTree", &HandleGetFrameTree,
"Page.getResourceTree",
"Returns present frame / resource tree structure.");
AddStaticHandler("DOM.getDocument", &HandleGetDocument, "DOM.getDocument",
"Returns the root DOM node to the caller.");
precode}
在上述代碼中,可以看到,我們可以直接調用chromium源碼中提供的API來完成特定功能的目的。這無疑為我們的開發工作提供了更加方便和高效的途徑。
總之,在chromium源碼中融合php等語言的應用,與其龐大的輔助庫和API提供,更好的增強了其功能和實用性,也進一步證明了其在當前瀏覽器領域的巨大潛力。
上一篇chrome截圖php
下一篇chrome php調試