I think you are looking for plugin_dir_url:
$url = plugin_dir_url(__FILE__);
$imageurl = $url.'images/someimage.png';
EDIT: Sorry I misread the question… that is only an answer to the linked question. You could check the parent directory recursively until you find the right one:
function base_plugin_dir($dirpath) {
if (substr(dirname($dir),-7) == 'plugins') {return $dirpath;}
else {$dirpath = base_plugin_dir($dirpath);}
return $dirpath;
}
function base_plugin_dir_url($filepath) {
$baseplugindir = base_plugin_dir(dirname($filepath));
$url = plugin_dir_url(trailingslashit($baseplugindir));
return $url;
}
Then you can get the URL using that function from whatever file:
$basepluginurl = base_plugin_dir_url(__FILE__);
$imageurl = $basepluginurl.'/images/wordpress.png';
OR
Better yet just set a constant from your main plugin file to use it later:
$url = plugin_dir_url(__FILE__);
define('MY_UNIQUE_PLUGIN_URL',$url);
So as to use in say /plugin/my-plugin/class/class1.php
$imageurl = MY_UNIQUE_PLUGIN_URL.'/images/wordpress.png';