public static void __$jphp_spl_autoload(Environment env, String className, String fileExtensions){ if (env.__autoload == null){ Invoker invoker = Invoker.valueOf(env, null, __autoloadMethod); if (invoker != null) env.__autoload = new SplClassLoader(invoker, __autoloadMethod); } if (env.__autoload != null) env.__autoload.load(new StringMemory(className), new StringMemory(fileExtensions)); }
public void registerAutoloader(SplClassLoader classLoader, boolean prepend) { for (SplClassLoader loader : classLoaders) if (loader.equals(classLoader)) return; if (prepend) { classLoaders.add(0, classLoader); } else classLoaders.add(classLoader); }
public static Memory spl_autoload_functions(Environment env){ ArrayMemory result = new ArrayMemory(); for (SplClassLoader loader : env.getClassLoaders()){ result.add(loader.getCallback().toImmutable()); } if (result.size() == 0){ if (env.__autoload == null){ Invoker invoker = Invoker.valueOf(env, null, __autoloadMethod); if (invoker != null) { env.__autoload = new SplClassLoader(invoker, __autoloadMethod); result.add(env.__autoload.getCallback().toImmutable()); } } } return result.toConstant(); }
public SplClassLoader forEnvironment(Environment newEnvironment) { Invoker invoker = this.invoker.forEnvironment(newEnvironment); return new SplClassLoader(invoker, callback); }
public ClassEntity autoloadCall(String name, String lowerName) { synchronized (autoloadLocks) { // detect recursion in autoload if (StringUtils.isValidClassName(name) && autoloadLocks.add(lowerName)) { StringMemory tmp = new StringMemory(name); for (SplClassLoader loader : classLoaders) { loader.load(tmp); ClassEntity classEntity = fetchClass(name, false); if (classEntity != null) { autoloadLocks.remove(lowerName); return classEntity; } } if (defaultAutoLoader != null) { defaultAutoLoader.load(tmp); } autoloadLocks.remove(lowerName); return fetchClass(name, false); } else { return null; } } }
@Signature public Memory importAutoLoaders(Environment env, Memory... args) { for (SplClassLoader loader : env.getClassLoaders()) { environment.registerAutoloader(loader.forEnvironment(environment), false); } return Memory.NULL; }
public static boolean spl_autoload_register(Environment env, TraceInfo trace, Memory callback, boolean _throw, boolean prepend){ Invoker invoker = expectingCallback(env, trace, 1, callback); if (invoker == null) return false; env.registerAutoloader(new SplClassLoader(invoker, callback), prepend); return true; }
public static boolean spl_autoload_unregister(Environment env, TraceInfo trace, Memory callback){ Invoker invoker = expectingCallback(env, trace, 1, callback); if (invoker == null) return false; return env.unRegisterAutoloader(new SplClassLoader(invoker, callback)); }
public boolean unRegisterAutoloader(SplClassLoader classLoader) { boolean result = false; Iterator<SplClassLoader> iterator = classLoaders.iterator(); while (iterator.hasNext()) { if (iterator.next().equals(classLoader)) { result = true; iterator.remove(); } } return result; }
synchronized protected SplClassLoader _getSplClassLoader(Environment env) { if (splClassLoader == null) { ArrayMemory callback = new ArrayMemory(); callback.add(this); callback.add("loadClass"); Invoker invoker = Invoker.valueOf(env, null, callback); splClassLoader = new SplClassLoader(invoker, callback); } return splClassLoader; }
Invoker invoker = Invoker.valueOf(this, null, splAutoloader); if (invoker != null) this.defaultAutoLoader = new SplClassLoader(invoker, splAutoloader);